home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / os2 / lxlt121.zip / lxLite / doc / lxLite.INF (.txt) < prev    next >
OS/2 Help File  |  1997-08-17  |  143KB  |  2,843 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. lxLite User's Guide ΓòÉΓòÉΓòÉ
  3.  
  4.                      Dedicated to my little daughter Alice,
  5.  
  6.                            born 12 Feb, 1996 at 03:45.
  7.  
  8.  
  9. Distribution 
  10.  
  11. Starting from version 1.1.9 I at last decided (really I at last realized what 
  12. it really is :-) ) to distribute lxLite under GNU General Public License (GPL). 
  13.  
  14. The program is written exclusively using Virtual Pascal, with use of its 
  15. built-in 32-bit assembler. This is an excellent language which takes full 
  16. advantages of OS/2`s possibilities, is BorlandPascal compatible, and have a 
  17. much more powerful than BP built-in optimizer. 
  18.  
  19. Contents 
  20.  
  21.      Introduction 
  22.      Features 
  23.      Command-line switches 
  24.      Configuration file 
  25.      Error messages 
  26.      Known bugs and limitations 
  27.      Thanks... 
  28.      lxLite Utility Pack 
  29.      Author info 
  30.  
  31.  You really should read the "what's new" section which contains many things I 
  32.  was too lazy to add to documentation. 
  33.  
  34.  Also is available a German version of documentation (although in plain .TXT 
  35.  format, and a little out of date - for version 1.1.5). 
  36.  
  37.  Also available a short overview in Russian (codepage 866). 
  38.  
  39.  
  40.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  41.  
  42.  
  43. ΓòÉΓòÉΓòÉ 1.1. Author info ΓòÉΓòÉΓòÉ
  44.  
  45.                              Andrew Pavel Zabolotny
  46.  
  47. Born Jan, 25, 1973 in Kishinev, Moldova, I moved around `95 to St. Petersburg, 
  48. Russia. I'm currently working as system programmer at the Information Security 
  49. Center of I.M.I.C.S. (Institute of Modelling and Intellectualization of Complex 
  50. Systems) at the St. Petersburg's State Electrotechnical University. 
  51.  
  52. All my spare time I`m dedicating to my family (esp. to my 1-year-old daughter 
  53. Alice) and to system programming. Most (alas) of my programs I wrote for 
  54. Mess-DOS, but last two years I`m trying to make familiar with the Architecture 
  55. Of Real Operating Systems {tm} :-), particularily that of OS/2, and (sometimes 
  56. :-) I`m writing Small But Very Useful Utilites :-) Perhaps, the most useful of 
  57. them is lxLite - an OS/2 executables compressor, something like LZEXE, PKLITE 
  58. etc in the world of DOS. You can find it (perhaps) on the hobbes.nmsu.edu 
  59. archive in the /os2/archive subdirectory (although I do not agree with 
  60. classifying lxLite as an archiver :-), it is rather a mixture of a system tool 
  61. with a programming tool (since it allows to do a lot of with the structure of 
  62. LX executable modules ) 
  63.  
  64. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  65.  
  66. To contact me, please write to bit@freya.etu.ru 
  67. or you can return to title page 
  68.  
  69.  
  70. ΓòÉΓòÉΓòÉ 1.2. GNU General Public License ΓòÉΓòÉΓòÉ
  71.  
  72.  
  73.  
  74.                            GNU GENERAL PUBLIC LICENSE
  75.  
  76.  
  77.  
  78.  
  79.                               Version 2, June 1991
  80.  
  81.  
  82. Copyright (C) 1989, 1991 Free Software Foundation, Inc.
  83. 675 Mass Ave, Cambridge, MA 02139, USA
  84. Everyone is permitted to copy and distribute verbatim copies
  85. of this license document, but changing it is not allowed.
  86.  
  87.  
  88. Preamble 
  89.  
  90. The licenses for most software are designed to take away your freedom to share 
  91. and change it.  By contrast, the GNU General Public License is intended to 
  92. guarantee your freedom to share and change free software--to make sure the 
  93. software is free for all its users. This General Public License applies to most 
  94. of the Free Software Foundation's software and to any other program whose 
  95. authors commit to using it.  (Some other Free Software Foundation software is 
  96. covered by the GNU Library General Public License instead.)  You can apply it 
  97. to your programs, too. 
  98.  
  99. When we speak of free software, we are referring to freedom, not price.  Our 
  100. General Public Licenses are designed to make sure that you have the freedom to 
  101. distribute copies of free software (and charge for this service if you wish), 
  102. that you receive source code or can get it if you want it, that you can change 
  103. the software or use pieces of it in new free programs; and that you know you 
  104. can do these things. 
  105.  
  106. To protect your rights, we need to make restrictions that forbid anyone to deny 
  107. you these rights or to ask you to surrender the rights. These restrictions 
  108. translate to certain responsibilities for you if you distribute copies of the 
  109. software, or if you modify it. 
  110.  
  111. For example, if you distribute copies of such a program, whether gratis or for 
  112. a fee, you must give the recipients all the rights that you have. You must make 
  113. sure that they, too, receive or can get the source code. And you must show them 
  114. these terms so they know their rights. 
  115.  
  116. We protect your rights with two steps: (1) copyright the software, and (2) 
  117. offer you this license which gives you legal permission to copy, distribute 
  118. and/or modify the software. 
  119.  
  120. Also, for each author's protection and ours, we want to make certain that 
  121. everyone understands that there is no warranty for this free software. If the 
  122. software is modified by someone else and passed on, we want its recipients to 
  123. know that what they have is not the original, so that any problems introduced 
  124. by others will not reflect on the original authors' reputations. 
  125.  
  126. Finally, any free program is threatened constantly by software patents.  We 
  127. wish to avoid the danger that redistributors of a free program will 
  128. individually obtain patent licenses, in effect making the program proprietary. 
  129. To prevent this, we have made it clear that any patent must be licensed for 
  130. everyone's free use or not licensed at all. 
  131.  
  132. The precise terms and conditions for copying, distribution and modification 
  133. follow. 
  134.  
  135.  
  136.  
  137.                            GNU GENERAL PUBLIC LICENSE
  138.  
  139.          TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  140.  
  141.  
  142.  0. This License applies to any program or other work which contains a notice 
  143. placed by the copyright holder saying it may be distributed under the terms of 
  144. this General Public License.  The "Program", below, refers to any such program 
  145. or work, and a "work based on the Program" means either the Program or any 
  146. derivative work under copyright law: that is to say, a work containing the 
  147. Program or a portion of it, either verbatim or with modifications and/or 
  148. translated into another language.  (Hereinafter, translation is included 
  149. without limitation in the term "modification".)  Each licensee is addressed as 
  150. "you". 
  151.  
  152. Activities other than copying, distribution and modification are not covered by 
  153. this License; they are outside its scope.  The act of running the Program is 
  154. not restricted, and the output from the Program is covered only if its contents 
  155. constitute a work based on the Program (independent of having been made by 
  156. running the Program). Whether that is true depends on what the Program does. 
  157.  
  158. 1. You may copy and distribute verbatim copies of the Program's source code as 
  159. you receive it, in any medium, provided that you conspicuously and 
  160. appropriately publish on each copy an appropriate copyright notice and 
  161. disclaimer of warranty; keep intact all the notices that refer to this License 
  162. and to the absence of any warranty; and give any other recipients of the 
  163. Program a copy of this License along with the Program. 
  164.  
  165. You may charge a fee for the physical act of transferring a copy, and you may 
  166. at your option offer warranty protection in exchange for a fee. 
  167.  
  168. 2. You may modify your copy or copies of the Program or any portion of it, thus 
  169. forming a work based on the Program, and copy and distribute such modifications 
  170. or work under the terms of Section 1 above, provided that you also meet all of 
  171. these conditions: 
  172.  
  173.     a) You must cause the modified files to carry prominent notices
  174.     stating that you changed the files and the date of any change.
  175.  
  176.     b) You must cause any work that you distribute or publish, that in
  177.     whole or in part contains or is derived from the Program or any
  178.     part thereof, to be licensed as a whole at no charge to all third
  179.     parties under the terms of this License.
  180.  
  181.     c) If the modified program normally reads commands interactively
  182.     when run, you must cause it, when started running for such
  183.     interactive use in the most ordinary way, to print or display an
  184.     announcement including an appropriate copyright notice and a
  185.     notice that there is no warranty (or else, saying that you provide
  186.     a warranty) and that users may redistribute the program under
  187.     these conditions, and telling the user how to view a copy of this
  188.     License.  (Exception: if the Program itself is interactive but
  189.     does not normally print such an announcement, your work based on
  190.     the Program is not required to print an announcement.)
  191.  
  192. These requirements apply to the modified work as a whole.  If identifiable 
  193. sections of that work are not derived from the Program, and can be reasonably 
  194. considered independent and separate works in themselves, then this License, and 
  195. its terms, do not apply to those sections when you distribute them as separate 
  196. works.  But when you distribute the same sections as part of a whole which is a 
  197. work based on the Program, the distribution of the whole must be on the terms 
  198. of this License, whose permissions for other licensees extend to the entire 
  199. whole, and thus to each and every part regardless of who wrote it. 
  200.  
  201. Thus, it is not the intent of this section to claim rights or contest your 
  202. rights to work written entirely by you; rather, the intent is to exercise the 
  203. right to control the distribution of derivative or collective works based on 
  204. the Program. 
  205.  
  206. In addition, mere aggregation of another work not based on the Program with the 
  207. Program (or with a work based on the Program) on a volume of a storage or 
  208. distribution medium does not bring the other work under the scope of this 
  209. License. 
  210.  
  211. 3. You may copy and distribute the Program (or a work based on it, under 
  212. Section 2) in object code or executable form under the terms of Sections 1 and 
  213. 2 above provided that you also do one of the following: 
  214.  
  215.     a) Accompany it with the complete corresponding machine-readable
  216.     source code, which must be distributed under the terms of Sections
  217.     1 and 2 above on a medium customarily used for software interchange; or,
  218.  
  219.     b) Accompany it with a written offer, valid for at least three
  220.     years, to give any third party, for a charge no more than your
  221.     cost of physically performing source distribution, a complete
  222.     machine-readable copy of the corresponding source code, to be
  223.     distributed under the terms of Sections 1 and 2 above on a medium
  224.     customarily used for software interchange; or,
  225.  
  226.     c) Accompany it with the information you received as to the offer
  227.     to distribute corresponding source code.  (This alternative is
  228.     allowed only for noncommercial distribution and only if you
  229.     received the program in object code or executable form with such
  230.     an offer, in accord with Subsection b above.)
  231.  
  232. The source code for a work means the preferred form of the work for making 
  233. modifications to it.  For an executable work, complete source code means all 
  234. the source code for all modules it contains, plus any associated interface 
  235. definition files, plus the scripts used to control compilation and installation 
  236. of the executable.  However, as a special exception, the source code 
  237. distributed need not include anything that is normally distributed (in either 
  238. source or binary form) with the major components (compiler, kernel, and so on) 
  239. of the operating system on which the executable runs, unless that component 
  240. itself accompanies the executable. 
  241.  
  242. If distribution of executable or object code is made by offering access to copy 
  243. from a designated place, then offering equivalent access to copy the source 
  244. code from the same place counts as distribution of the source code, even though 
  245. third parties are not compelled to copy the source along with the object code. 
  246.  
  247. 4. You may not copy, modify, sublicense, or distribute the Program except as 
  248. expressly provided under this License.  Any attempt otherwise to copy, modify, 
  249. sublicense or distribute the Program is void, and will automatically terminate 
  250. your rights under this License. However, parties who have received copies, or 
  251. rights, from you under this License will not have their licenses terminated so 
  252. long as such parties remain in full compliance. 
  253.  
  254. 5. You are not required to accept this License, since you have not signed it. 
  255. However, nothing else grants you permission to modify or distribute the Program 
  256. or its derivative works.  These actions are prohibited by law if you do not 
  257. accept this License.  Therefore, by modifying or distributing the Program (or 
  258. any work based on the Program), you indicate your acceptance of this License to 
  259. do so, and all its terms and conditions for copying, distributing or modifying 
  260. the Program or works based on it. 
  261.  
  262. 6. Each time you redistribute the Program (or any work based on the Program), 
  263. the recipient automatically receives a license from the original licensor to 
  264. copy, distribute or modify the Program subject to these terms and conditions. 
  265. You may not impose any further restrictions on the recipients' exercise of the 
  266. rights granted herein. You are not responsible for enforcing compliance by 
  267. third parties to this License. 
  268.  
  269. 7. If, as a consequence of a court judgment or allegation of patent 
  270. infringement or for any other reason (not limited to patent issues), conditions 
  271. are imposed on you (whether by court order, agreement or otherwise) that 
  272. contradict the conditions of this License, they do not excuse you from the 
  273. conditions of this License.  If you cannot distribute so as to satisfy 
  274. simultaneously your obligations under this License and any other pertinent 
  275. obligations, then as a consequence you may not distribute the Program at all. 
  276. For example, if a patent license would not permit royalty-free redistribution 
  277. of the Program by all those who receive copies directly or indirectly through 
  278. you, then the only way you could satisfy both it and this License would be to 
  279. refrain entirely from distribution of the Program. 
  280.  
  281. If any portion of this section is held invalid or unenforceable under any 
  282. particular circumstance, the balance of the section is intended to apply and 
  283. the section as a whole is intended to apply in other circumstances. 
  284.  
  285. It is not the purpose of this section to induce you to infringe any patents or 
  286. other property right claims or to contest validity of any such claims; this 
  287. section has the sole purpose of protecting the integrity of the free software 
  288. distribution system, which is implemented by public license practices.  Many 
  289. people have made generous contributions to the wide range of software 
  290. distributed through that system in reliance on consistent application of that 
  291. system; it is up to the author/donor to decide if he or she is willing to 
  292. distribute software through any other system and a licensee cannot impose that 
  293. choice. 
  294.  
  295. This section is intended to make thoroughly clear what is believed to be a 
  296. consequence of the rest of this License. 
  297.  
  298. 8. If the distribution and/or use of the Program is restricted in certain 
  299. countries either by patents or by copyrighted interfaces, the original 
  300. copyright holder who places the Program under this License may add an explicit 
  301. geographical distribution limitation excluding those countries, so that 
  302. distribution is permitted only in or among countries not thus excluded.  In 
  303. such case, this License incorporates the limitation as if written in the body 
  304. of this License. 
  305.  
  306. 9. The Free Software Foundation may publish revised and/or new versions of the 
  307. General Public License from time to time.  Such new versions will be similar in 
  308. spirit to the present version, but may differ in detail to address new problems 
  309. or concerns. 
  310.  
  311. Each version is given a distinguishing version number.  If the Program 
  312. specifies a version number of this License which applies to it and "any later 
  313. version", you have the option of following the terms and conditions either of 
  314. that version or of any later version published by the Free Software Foundation. 
  315. If the Program does not specify a version number of this License, you may 
  316. choose any version ever published by the Free Software Foundation. 
  317.  
  318. 10. If you wish to incorporate parts of the Program into other free programs 
  319. whose distribution conditions are different, write to the author to ask for 
  320. permission.  For software which is copyrighted by the Free Software Foundation, 
  321. write to the Free Software Foundation; we sometimes make exceptions for this. 
  322. Our decision will be guided by the two goals of preserving the free status of 
  323. all derivatives of our free software and of promoting the sharing and reuse of 
  324. software generally. 
  325.  
  326. NO WARRANTY 
  327.  
  328. 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR 
  329. THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN OTHERWISE 
  330. STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE 
  331. PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, 
  332. INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
  333. FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND 
  334. PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, 
  335. YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 
  336.  
  337. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL 
  338. ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE 
  339. PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 
  340. GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR 
  341. INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA 
  342. BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A 
  343. FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER 
  344. OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 
  345.  
  346.                            END OF TERMS AND CONDITIONS
  347.  
  348.  
  349. Appendix: How to Apply These Terms to Your New Programs 
  350.  
  351. If you develop a new program, and you want it to be of the greatest possible 
  352. use to the public, the best way to achieve this is to make it free software 
  353. which everyone can redistribute and change under these terms. 
  354.  
  355. To do so, attach the following notices to the program. It is safest to attach 
  356. them to the start of each source file to most effectively convey the exclusion 
  357. of warranty; and each file should have at least the "copyright" line and a 
  358. pointer to where the full notice is found. 
  359.  
  360.  
  361.     Copyright (C) 19yy
  362.  
  363.     This program is free software; you can redistribute it and/or modify
  364.     it under the terms of the GNU General Public License as published by
  365.     the Free Software Foundation; either version 2 of the License, or
  366.     (at your option) any later version.
  367.  
  368.     This program is distributed in the hope that it will be useful,
  369.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  370.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  371.     GNU General Public License for more details.
  372.  
  373.     You should have received a copy of the GNU General Public License
  374.     along with this program; if not, write to the Free Software
  375.     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  376.  
  377. Also add information on how to contact you by electronic and paper mail. 
  378.  
  379. If the program is interactive, make it output a short notice like this when it 
  380. starts in an interactive mode: 
  381.  
  382.     Gnomovision version 69, Copyright (C) 19yy name of author
  383.     Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
  384.     This is free software, and you are welcome to redistribute it
  385.     under certain conditions; type `show c' for details.
  386.  
  387. The hypothetical commands `show w' and `show c' should show the appropriate 
  388. parts of the General Public License.  Of course, the commands you use may be 
  389. called something other than `show w' and `show c'; they could even be 
  390. mouse-clicks or menu items--whatever suits your program. 
  391.  
  392. You should also get your employer (if you work as a programmer) or your school, 
  393. if any, to sign a "copyright disclaimer" for the program, if necessary.  Here 
  394. is a sample; alter the names: 
  395.  
  396.   Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  397.   `Gnomovision' (which makes passes at compilers) written by James Hacker.
  398.  
  399.   <signature of Ty Coon>, 1 April 1989
  400.   Ty Coon, President of Vice
  401.  
  402. This General Public License does not permit incorporating your program into 
  403. proprietary programs.  If your program is a subroutine library, you may 
  404. consider it more useful to permit linking proprietary applications with the 
  405. library.  If this is what you want to do, use the GNU Library General Public 
  406. License instead of this License. 
  407.  
  408.  
  409. ΓòÉΓòÉΓòÉ 1.3. Known bugs and limitations ΓòÉΓòÉΓòÉ
  410.  
  411.  
  412.  
  413. Known bugs and limitations 
  414.  
  415. Here are a list of executables which failed for some reasons to work packed; 
  416. avoid packing them (lxLite will do it automatically, but if you renamed them 
  417. lxLite will not recognize them). 
  418.  
  419.      PMJPEG v1.5. However, even IBM`s REPACK cannot repack it, so I think this 
  420.       is because of either a bug in a linker used to generate it (and its 
  421.       executable has a strange structure) or a kind of debug protection 
  422.       (executable checksum checking?) 
  423.      VX-REXX executables. The main body of such executables (REXX ciphered 
  424.       code) is simply appended to a small LX stub. Such executables have an 
  425.       unknown structure and after lxLite packs its stub they become completely 
  426.       obsolete. 
  427.      Watcom C & C++ v>=10.0. Seems that Watcom likes to append garbage to LX 
  428.       files. These executables are meant for running in both OS/2 and DOS 
  429.       sessions and also have a strange structure. ; 
  430.      InterCom since it is protected from any kind of tampering. 
  431.      \OS2BOOT. OS2LDR expects OS2BOOT to be in NE format. 
  432.  
  433.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  434.  
  435.  Title page | Introduction | Features | Command-line switches | Configuration 
  436.  file | Error messages | Thanks... | Utility Pack | Author info 
  437.  
  438.  
  439. ΓòÉΓòÉΓòÉ 1.4. Configuration file ΓòÉΓòÉΓòÉ
  440.  
  441.  
  442.  
  443. Configuration file 
  444.  
  445. The .CFG file format is as simple as possible: it is a plain ASCII text file 
  446. which you can edit using any editor which supports them (almost any). Any 
  447. characters after a semicolumn ';' are ignored, i.e. you can put comments in 
  448. configuration file like this: 
  449.  
  450. ; This is an comment
  451.  
  452. You can define sections using widely used unix-configuration-file style, i.e. 
  453.  
  454. [section 1]
  455. section 1 content
  456.  
  457. [section 2]
  458. section 2 content
  459.  
  460. ...
  461. The word in square brackets is used to identify the configuration. This is an 
  462. example of a configuration entry: 
  463.  
  464. [newStub]
  465.  /ANP:0 /F+ /YDL /YXL /MRN /MLN /U-
  466.  
  467. As you can see, inside the section you should put any switches just like you do 
  468. on the command line. Recursive /C options are NOT ignored, so you can link one 
  469. configuration to another. Note, however, that lxLite will refuse to load same 
  470. configuration twice to avoid infinite-loop recursion, i.e. "lxLite /c:One 
  471. /c:Two /c:One" will load `One` configuration only ONCE. 
  472.  
  473. Every section can have multiple names, for example: 
  474.  
  475. [newStub ReplaceStub SetNewStub]
  476.  /ANP:0 /F+ /YDL /YXL /MRN /MLN /U-
  477.  
  478. This section is identified by three identifiers, i.e. /c:newstub, 
  479. /c:replacestub and /c:setnewstub switches will have same effect. If section 
  480. identifier begins with a / (slash) character, it is treated as a special case: 
  481. the text following the slash is treated as a list of file masks on which this 
  482. section will be applied automatically. For example, if we want to remove stubs 
  483. automatically on all .DLL files, we have to write a configuration section like: 
  484.  
  485. [/*.dll]
  486.  /t /zs
  487.  
  488. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  489.  
  490. Title page | Introduction | Features | Command-line switches | Error messages | 
  491. Bugs and limitations | Thanks... | Utility Pack | Author info 
  492.  
  493.  
  494. ΓòÉΓòÉΓòÉ 1.5. lxLite_de.txt ΓòÉΓòÉΓòÉ
  495.  
  496.        ----------------------------------------------------
  497.        lxLite - ein Packer fuer ausfuehrbare OS/2-Dateien
  498.       ----------------------------------------------------
  499.  
  500.                    Widmung: Meiner kleinen Tochter Alice,
  501.                      geboren am 12 Feb, 1996 um 03:45.
  502.  
  503. 0. Version der deutschen Dokumentation
  504. --------------------------------------
  505.  
  506.   Die  deutsche Uebersetzung basiert auf der  englischen  Dokumentation zu
  507. lxLite 1.1.5.
  508.  
  509. 1. Distribution
  510. ---------------
  511.  
  512.   Dieses Programm  ist Freeware.  Das heisst,  man kann es verbreiten, wie
  513. man will,  ausser fuer den kommerziellen  Gebrauch. Kommerzielle Verwendung
  514. ist  nur  mit  meiner  ausdruecklichen  Zustimmung  erlaubt.  Wie  man mich
  515. kontaktieren kann ist in der letzten Sektion dieser Datei zu sehen.
  516.  
  517.   Freeware heisst aber auch, dass es keinerlei Garantie fuer das gibt, was
  518. das Programm  macht,  ob  es das macht  was man erwartet,  ob es ueberhaupt
  519. etwas  macht.  Ich  uebernehme  keinerlei  Verantwortung  fuer  irgendeinen
  520. Schaden,  entgangene Profite etc.,  die durch Fehler dieses Programms (oder
  521. der Uebersetzung der Dokumentation) verursacht werden.
  522.  
  523.   Wie auch  immer,  es  ist erlaubt,  das Programm  dazu  zu verwenden, um
  524. jedes, auch jedes kommerzielle Produkt zu verbessern. Und zwar nicht um den
  525. eigenen  Vorteil,  sondern um  den Vorteil aller armen User,  die  sich mit
  526. riesigen Programmdateien herumaergern muessen.
  527.  
  528.   Das  Programm  ist ausschliesslich  in  Virtual  Pascal  1.0  Beta #003,
  529. geschrieben, vor allem mit dem eingebauten 32-bit Assembler. Virtual Pascal
  530. ist eine excellente Sprache,  die alle Vorteile und Moeglichkeiten von OS/2
  531. bedient und unterstuetzt,  gleichzeitig Borland Pascal kompatibel  ist, und
  532. einen maechtigen eingebauten Optimierer hat.
  533.  
  534.   Falls du den Source  Code von lxLite willst,  bitte wende  Dich an mich,
  535. aber  du  musst mir ganz  sagen WARUM du  ihn brauchst;  Leute,  die fremde
  536. Programme unter eigenem Namen verkaufen wollen, bekommen ihn sicher nicht.
  537.  
  538.  2. Einfuehrung
  539.  -------------
  540.  
  541.   Ich denke,  wir alle  sind recht  sauer ueber die gewaltige  Groesse die
  542. fast alle modernen Programme haben, die unter OS/2 laufen (fuer WinDOS gilt
  543. allerdings  das  gleiche),  ohne  oft  entscheidend  mehr  zu  koennen  als
  544. Programme frueherer  Zeiten.  Ich verstehe nicht,  warum sie so gross sind,
  545. weil die meisten Compiler,  sogar  IBM CSet  generieren  Code  in moderaten
  546. Groessen.
  547.  
  548.   Nehmen wir als Beispiel das allseits  bekannte MultiMaint.  Was um alles
  549. in der Welt macht das Ding in einer 700K grossen EXE-Datei? Ich verstehe es
  550. nicht.  Dazu kommt noch,  warum  wird  die beinahe  gleiche  EXE-Datei noch
  551. doppelt und dreifach dazugepackt (Ich meine MultiSafe und IniMaint, die mit
  552. MultiMaint daherkommen).  Das Programm ist ja ganz nett und  es macht seine
  553. Arbeit ganz  gut,  aber  fuer  diese Arbeit  ist es einfach  zu gross. OS/2
  554. Kernel haben etwa  den gleichen  Umfang.  Wo ist da die  Relation? Ich kann
  555. (und will)  es mir einfach nicht leisten so  einen grossen Haufen  Mist auf
  556. meine Platte zu laden,  also habe ich MultiMaint & Co. wieder gekuebelt. Zu
  557. Dumm fuer deren Autoren.
  558.  
  559.   lxLite ist ein Workaround fuer dieses Problem.  Programmdateien kann man
  560. packen,  sie  nehmen dann nur noch  den halben  Platz ein,  und machen noch
  561. immer den glichen Job.  Dummerweise braucht es  auch den  gleichen Platz im
  562. Speicher - das ist die Schuld des Autors.
  563.  
  564.   Soviel ich  weiss,  gibt  es  fuer  OS/2  nur  ein  Programm,  das etwas
  565. Aehnliches macht REPACK von IBM (EWS?). Aber vergleichen mit lxLite erzeugt
  566. es  groessere Dateien,  obwohl  es den gleichen Algorithmus  verwendet. Zum
  567. Beispiel, COURIER.FON aus OS/2 Warp Build 8.192 wird von REPACK zu 44K, von
  568. lxLite aber in 34K  gepackt.  Spuer den Unterschied! BTW, LINK386+Ressource
  569. Compiler  compilieren COURIER.FON auch in  ein 44K-Datei.  Daher denke ich,
  570. dass das sie eine gemeinsame Library verwenden.
  571.  
  572.   Ich komprimierte  alle  meine Programmdateien (inklusive  aber nicht nur
  573. ?:\os2\*.exe,  ?:\os2\dll\*.*  und  ?:\os2\dll\ibmnull;laserjet)  und  mein
  574. System ist nach  wie vor stabil.  Ein  lxLite  Benutzer  (Pavel Roskin) hat
  575. festgestellt,  dass lxLite sogar os2krnl komprimiert:-)  Sehr  angenehm vor
  576. allem  fuer  eine  einzelne  Bootdiskette  [Anmerkung  d.  Uebersetzers: Es
  577. stimmt].
  578.  
  579. 3. Features
  580. -----------
  581.  
  582.   lxLite komprimiert die Dateien auf die  gleiche Art wie LINK386  es tut.
  583. Es gibt  keine andere  Moeglichkeit gepackte Programmdateien unter  OS/2 zu
  584. implementieren,  als die zwei, die OS/2 Warp (oder die eine die 2.x) kennt.
  585. So, hier ist eine kurze Beschreibung dieser beiden Algorithmen:
  586.  
  587.   1. Run-length packing.  Das ist im Prinzip die gleiche  Methode, wie sie
  588. Microsoft C fuer DOS verwendet.  Das Ergebnis ist sehr SCHLECHT, weils sich
  589. Programmdateien  nicht fuer  die  Pack-Methode  eignen.  Zum  Beispiel, PCX
  590. Dateien werden auf die gleiche Art gepackt.
  591.  
  592.   2. Eine Art Lempel-Ziv  Algorithmus.  Lempel-Ziv  ist  die  Methode, die
  593. beinahe  alle  DOS-EXE Packer  verwenden -  LZEXE,  PKLITE, PGMPAK etc. Die
  594. Methode  die fuer ausfuehrebare  OS/2  Dateien standardisiert ist, ist IMHO
  595. nicht  die effektivste.  Dazu  kommt noch,  dass OS/2-Programmdateien einen
  596. anderen   Ladealgorithmus  haben  als   DOS-EXE-Dateien,   Teile  von
  597. OS/2-Programmdateien koennen auch  nur geladen werden,  wenn  sie gebraucht
  598. werden.  Deshalb kann ein Lempel-Ziv Woerterbuch nicht ueber  eine einzelne
  599. Page (4096  Bytes)  hinausgehen.  Folglich sind die Resultate auch nicht so
  600. gut, wie sie theoretisch sein koennten.
  601.  
  602.   lxLite kann beide Methoden  verwenden,  sowohl zum Packen,  als auch zum
  603. Entpacken. Im Allgemeinen ergibt die zweite Methode die besseren Resultate,
  604. aber moeglicherweise (?) gibt es Dateien fuer die die erste besser ist. Aus
  605. diesem Grund werden defaultmaessig beide Methoden  angewendet,  die mit dem
  606. kleineren Ergebnis gewaehlt. lxLite kann auch benutzt werden, um Dateien zu
  607. entpacken,  die  bereits komprimiert sind,  sei es mit mit  lxLite, LINK386
  608. oder REPACK von IBM.
  609.  
  610.   Was fuer Dateien koennen nun mit lxLite  gepackt werden?  Das  LX Format
  611. wird unter OS/2 beinahe ueberall verwendet: Beinahe alles ist im LX format.
  612. Nicht  nur  EXE-Dateien,  sondern  auch  .DLL,  .PDR,  .QPR,  .DRV,  .FON,
  613. .SYS-Dateien  koennen mit lxLite  gepackt werden.  Sogar  die VDDs (Virtual
  614. Device Drivers)  in \OS2\MDOS koennen damit gepackt werden.  Praktisch kann
  615. man lxLite auf jedes Datei loslassen:  Wenn es kein LX ist,  wird lxLite es
  616. nicht anruehren.
  617.  
  618.   Es ist  also moeglich,  den ganzen \OS2\*\ zu komprimieren,  man bekommt
  619. jede Menge Extraplatz  ohne irgendwelchen  Overhead! Die Dekompressionszeit
  620. wird durch die verkuerzten Ladezeiten  der  verkleinerten  Dateien  von der
  621. Platte bei weitem  aufgewogen.  Also,  Reboot von einer Diskette (eventuell
  622. von  den  beiden  Installationsdisketten  und  dann  F3  waehlen,  dann das
  623. entsprechende  Laufwerk waehlen,  wo das installierte OS/2  liegt. Dann ist
  624. folgendes beim Command prompt einzugeben:
  625.  
  626.   \[path]\lxLite os2\*.exe os2\dll\*.* os2\dll\ibmnull\*.drv
  627.  
  628. und  so  weiter.  So  koennen  auch  die  Dateien,  welche  zur  Laufzeit
  629. normalerweise gesperrt (EXE,DLL) sind, problemlos gepackt werden.
  630.  
  631.  lxLite Version 1.00  und hoeher ist sogar in der Lage Dateien, die gerade
  632. benutzt werden,  zu packen. In diesem Fall kann warnt lxLite und fragt nach
  633. ob es das Modul auslassen oder durch seine gepackte Version  ersetzen soll.
  634. Grundsaetzlich  ist das ersetzen  auch  so  kein  Problem,  nur muss man im
  635. Hinterkopf behalten,  dass das Original bereits im  Speicher  sitzt, und so
  636. auch  jede  Menge Platz im  SWAPPER.DAT auffressen.  Ein  Reboot sobald wie
  637. moeglich ist daher immer eine gute Idee.
  638.  
  639.   Versionen  von  lxLite  ueber  1.00  gibt  es  in  zwei  verschiedenen
  640. EXE-Dateien:  lxLite.exe ist die normale Version fuer OS/2  v2.99, Warp und
  641. hoeher.  Die andere,  namens lxLite2x.exe  ist  fuer  die  aelteren  32 bit
  642. Versionen von OS/2 (i.e. 2.x, NICHT 1.x weil unter 1.x gab es das LX Format
  643. noch nicht). Als OS/2 Warp User kann man es getrost loeschen.
  644.  
  645.   Version 1.1.0  und Hoeher erkennen Programme, die Daten nach der eigent-
  646. lichen  LX-Struktur  stehen  (i.e.  was  auf  DOS  overlay  data  heisst).
  647. Watcom`s  gebundene Programme (wie WCC.EXE Versionen >=  10.0) und  Watcom
  648. Visual  Rexx  Programme haben so  eine  Struktur.  In diesem Fall erzeugt
  649. lxLite eine  Warnung und ersucht um Bestaetigung,  ob ein solches Programm
  650. wirklich gepackt werden soll.  Es ist SEHR empfehlenswert, dass zuerst eine
  651. Kopie  von diesem Programm gemacht wird,  bevor man es zu packen versucht,
  652. denn  die Chance,  dass es  danach  nicht mehr  geht,  ist  sehr  hoch. Das
  653. deshalb,  weil  lxLite (natuerlich)  keine (prinzipiell moeglichen) Pointer
  654. innerhalb des Programms,  die auf Daten,  die an das Programm gebunden sind
  655. (wie zum Beispiel VX-REXX Programme), veraendert.
  656.  
  657.  
  658.  
  659.  
  660. 4. Optionen
  661. -----------
  662.  
  663.   Es gibt jede Menge Optionen  in  lxLite.  Ich liebe Optionen einfach :-)
  664. Deshalb kann man bei lxLite beinahe alles und jedes  konfigurieren.  Um den
  665. User  vor allzuviel Konfiguration zu  schuetzen,  unterstuetzt  lxLite eine
  666. einzelne  Konfigurationsdatei,  in  der  gleich  einige  Konfigurationen
  667. mitgeliefert ('factory defaults') sind. Sie sind weiter unten aufgelistet:
  668. ---------------------------------------------------------------------------
  669.  
  670. DEFAULT (wird standardmaessig geladen): DEFAULT ist eine `Arbeitskonfigura-
  671.   tion'.  Alle  Parameter sind  auf maximale Kompression gesetzt.  Die Er-
  672.   zeugung  von  .BAK  Dateien  ist  abgeschaltet.  Beachte,  dass  diese
  673.   Konfiguration  IMMER geladen wird,  bevor  irgendwelche  andere Optionen
  674.   wirksam werden,  sogar  die /C{#} Option  wird  ausgefuehrt  NACHDEM die
  675.   DEFAULT- Konfiguration geladen Worten ist.
  676.  
  677. FAST:  Niedrigste  Kompressionsrate,  kuerzeste  Ladezeiten.  Wenn  man IBM
  678.   glaubt,  werden  Programmdateien  schneller  geladen,  wenn Datenobjekte
  679.   innerhalb der Datei an  Sektorgrenzen (512  Bytes)  ausgerichtet werden.
  680.   Ich  kann  eigentlich  keinen  Unterschied  feststellen,  daher:  Selber
  681.   ausprobieren!  Vorkomprimierte  Daten  werden  nicht  de-komprimiert und
  682.   wieder re-komprimiert.
  683.  
  684. FAST2:  Packt  ein bisschen  besser,  aber  langsamer.  Ladezeiten  sind so
  685.   schnell wie bei CFG#1.
  686.  
  687. VER2X: Optimal fuer pre-Warp Versionen von OS/2. Versionen vor Warp (3.0)
  688.  wissen nichts von der Lempel-Ziv (/EXEPACK:2)  Methode. Programme sollten
  689.   nicht  mit Lempel-Ziv  gepackt werden,  falls  die Moeglichkeit besteht,
  690.   dass sie unter OS/2 2.xx (ausser 2.99) laufen sollen.
  691.  
  692. FAILSAFE: Lempel-Ziv packen ist eingeschaltet. Ein fehlersichere Konfigura-
  693.   tion.  Alle Daten werden genau wie von LINK386 geschrieben, deshalb sind
  694.   die Dateien etwas groesser  als bei der DEFAULT-Konfiguration.  Nur fuer
  695.   WARP (oder hoeher) und 2.99!
  696.  
  697. MAX:  Beste Kompressionsrate. SEHR LANGSAM! Wird wohl selten gebraucht wer-
  698.   den.
  699.  
  700. NEWSTUB:  Das ist eine spezielle Konfiguration mit der man den  DOS-Stub in
  701.   LX  Programmen  durch  einen  anderen  ersetzen  kann,  ohne irgendetwas
  702.   anderen zu  veraendern.  Du musst einen Dateinamen  fuer  den neuen Stub
  703.   angeben -  diese Konfiguration teilt lxLite mit,  dass es alte, gepackte
  704.   Objekte nicht entpackt und unkomprimierte Objekte nicht packt.
  705.  
  706. MINSTUB:  Diese Konfiguration ist mit NEWSTUB verbunden  und  ersetzt durch
  707.   den kleinstmoeglichen Stub  vom Typ `say-error-and-exit`.  Kleiner gehts
  708.   nimmer (glaub ich zumindest), ausser du kuerzt die Fehlermeldung.
  709.  
  710. VDMSTUB:  Diese Konfiguration befiehlt lxLite, den vorgefundenen Stub durch
  711.   einen`run-from-VDM`-Type  zu  ersetzen.  Dieser ist  auch  so  kurz, wie
  712.   moeglich:-).  Bitte  die  Beschreibung  der  /T{#}  Option  fuer weitere
  713.   Details durchlesen.
  714.  
  715. INFO:  Diese  Konfiguration  verwenden,  um  an  Informationen  ueber  die
  716.   Programmdatei zu erhalten  ohne es neu zu  schreiben (siehe  auch Option
  717.   /V+)
  718.  
  719. ---------------------------------------------------------------------------
  720.  
  721. Um eine  spezifische Konfiguration zu  verwenden,  ist lxLite  mit  /C# als
  722. Parameter aufzurufen,  wobei # der Name der Konfiguration ist. Die Einstel-
  723. lungen sind in der Datei lxLite.CFG  im  gleichen Verzeichnis,  in dem sich
  724. lxLite.EXE befindet.  Kuemmere dich nicht  um Pfade,  lxLite wird sein .CFG
  725. schon  finden.  Beispiel:  Um die Konfiguration `max` zu  verwenden, starte
  726. lxLite /cMax.
  727.  
  728. Fuer eine detailierte  Beschreibung des .CFG-Dateiformats,  lies die ueber-
  729. naechste Sektion.
  730.  
  731. Nun kommt eine detaillierte Erklaerung  darueber was  jeder einzelne Switch
  732. tut. Jeder Switch, der das '+'- oder '-'-Zeichen akzeptiert (um Aktion ein-
  733. oder auszuschalten)  kann auch ohne Zeichen benutzt werden, das heisst dann
  734. halt '+'. Das heisst z.B., /V+ ist gleich wie /V.
  735.  
  736. /A{P|S|N{P|S}}
  737.   setzt  die  Ausrichtungsmethode  (Alignment)  fuer  das  erste  und  die
  738.   weiteren Objekte.  Das erste Objekt kann man auf  [P]age shift, [S]ector
  739.   oder [N]o boundary ausrichten.  Die letzte Option (No boundary) wird von
  740.   LINK386 niemals benutzt, aber es funktioniert, und das LX Format erlaubt
  741.   es.  Alle  Objekte ausser  dem ersten  MUeSSEN  zumindest  auf PageShift
  742.   boundary  ausgerichtet  sein.  PageShift ist ein Wert,  der im LX Header
  743.   spezifiziert  ist. Um ihn neu zu definieren, verwende die /R# Option.
  744.  
  745. /B{+|-}
  746.   Das Umbenennen der Originaldatei in .BAK ein-  (+) oder ausschalten (-).
  747.   Beachte bitte,  dass  das eine  BETA-Version  ist  -  deshalb  sind .BAK
  748.   Dateien standardmaessig eingeschaltet.
  749.  
  750. /C{#}
  751.   Verwenden  der  Konfiguration  mit  ID  =  #.  Die  zwei  vordefinierten
  752.   Konfigurationsnamen sind  "DEFAULT"  und "UNPACK".  Die Erste wird immer
  753.   geladen,  wenn lxLite startet und die  Zweite wird benutzt wenn  die /X+
  754.   Option angegeben wird (NICHT gleichbedeutend mit /cUnpack).
  755.  
  756. /D{#}
  757.   Ausschliessen[D]e Dateimaske.  Alle Dateien die zu einer der angegebenen
  758.   Dateimasken passen,  werden  von  lxLite  uebergangen.  Alle Dateimasken
  759.   muessen durch Doppelpunkte  (:)  voneinander  getrennt sein (weil  ein :
  760.   nicht Teil einer Maske sein kann). Zum Beispiel wird /D*.zip:*.arj:*.rar
  761.   lxLite  daran  hindern  .zip,  .arj  and  .rar  Dateien  zu  bearbeiten.
  762.   Standardmaessig (/Cdefault)  enthaelt eine Liste aller Progreammdateien,
  763.   von denen bekannt ist,  dass  sie nicht richtig gepackt  werden koennen.
  764.   Mehrere  /D-Switches  hintereinander  werden addiert,  daher ist /D*.zip
  765.   /D*.arj  /D*.rar das gleiche wie das obige  Beispiel.  Um  die  Liste zu
  766.   loeschen ist einfach /D zu verwenden.
  767.  
  768. /F{+|-}
  769.   Erzwungenes  repacking.  Ist  zu  verwenden  um  die  Meldung  `already
  770.   processed` zu uebergehen, i.e.  wenn lxLite denkt, dass die  Datei schon
  771.   bearbeitet wurde,  das aber  in  Wirklichkeit  nicht der  Fall  war. Das
  772.   passiert  normalerweise nicht,  kann  aber passieren,  wenn man versucht
  773.   einen Stub durch einen anderen Stub  derselben Groesse zu  ersetzen, und
  774.   zwar bei einer bereits komprimierten Datei.
  775.  
  776. /G[X|D|S]{#}
  777.   e[X]tra /  [D]ebug  /  [S]tub Daten werden  in  die  spezifizierte Datei
  778.   [G]eschrieben.  Wenn lxLite  eine  LX  Datei  findet,  die  solche Daten
  779.   enthaelt,  und  man  diese  Daten verwerfen (oder  ersetzen  bei einem
  780.   Stub)  will,  wird lxLite sie in die spezifizierte Datei  stellen, bevor
  781.   sie verworfen werden. Die {#} Komponente kann auch eine Dateimaske sein,
  782.   sodass  man Daten in  Dateien mit demseleben  Namen,  aber einem anderen
  783.   Extender schreiben kann. Zum Beispiel /GD*.dbg teilt lxLite mit, dass es
  784.   zu verwerfende Debug-Informationen in  Dateien mit demselben  Namen aber
  785.   der Endung ".dbg" schreiben soll; der switch /GS*.stub.$s$ auf die Datei
  786.   "myfile.exe"  schreibt den Stub  in  die Datei  "myfile.stub.$s$". Siehe
  787.   auch die /O Option.
  788.  
  789. /I{+|-}
  790.   Zwingt (+)  lxLite dazu,  mit Idle Prioritaet zu laufen.  Das heisst, es
  791.   arbeitet nur,  wenn keine andere Aktivitaet im System herrscht  (d.h. es
  792.   wartet auf  Tasten und Mausbewegungen).  Das ist meiner Meinung  nach am
  793.   besten,  da lxLite  so  im  Hintergrund laufen kann und  die Performance
  794.   beinahe  ueberhaupt  nicht beeinflusst.  Nur  wenn  man  eine ungezogene
  795.   DOS-Box laufen  hat,  die sich  alle  CPU-Zeit  schnappt,  bleibt lxLite
  796.   stehen.  Wenn  lxLite  nun  mit  /I-  gestartet  wird  aendert  es seine
  797.   Prioritaet  nicht auf Idle,  und  daher mit einer  bestimmten Prioritaet
  798.   (z.B. via PRIORITY.EXE) gestartet werden.
  799.  
  800. /L{#}
  801.   Instruirt lxLite ein Logfile anzulegen. Es enthaelt nur die Dateien, die
  802.   lxLite auch bearbeitet, uebergangene Dateien werden hier nicht aufgenom-
  803.   men.  wenn kein  Name angegeben  ist,  wird lxLite.log im Verzeichnis in
  804.   dem sich auch lxLite.exe befindet  verwendet.  Neben dem Dateinamen wird
  805.   die Anfangs- und Endgroesse und die Probleme (falls welche auftraten).
  806.  
  807. /M{R{N|1|2|3}|L{N|1}}
  808.   Setzt  die  Kompressionsmethode  und  -parameter.  Das  zweite  Zeichen
  809.   definiert  die  Methode,  die  verwendet  werden  soll:  `R`  steht fuer
  810.   Run-Length (/EXEPACK:1) und 'L' fuer Lempel-Ziv (/EXEPACK:2). Das dritte
  811.   Zeichen ist der Kompressionslevel,  der mit der  Methode erreicht werden
  812.   soll;  Falls N spezifiziert  wird,  ist  die Methode  abgeschaltet. Drei
  813.   Levels  gibt  es fuer die  Run-Length-Kompression.  Der Level 1 ist der
  814.   schnellste.  Er  sucht nur nach  1-Zeichen  Strings.  Zum  Beispiel, ein
  815.   'AAAAAAAA'  String wird erkannt und zu  8, 1, 'A' gespeichert, waehrend
  816.   ein  'ABABABAB'  String unkomprimiert gespeichert wird.  Level 2 erkennt
  817.   Strings  jeder Laenge  bis  16  Zeichen.  Das Beispiel von oben wird zu
  818.   4,2,'AB'  kodiert.  Das ist  die  Standardeinstellung  fuer  die meisten
  819.   'Factory`-Konfigurationen.  Und als letztes, der dritte Level sucht nach
  820.   allen Strings  jeder Laenge bis zu  einen halben  Page-Laenge (= 2048).
  821.   Diese  Kompressionsmethode ist SEHR  langsam  und  ergibt selten echte
  822.   Ergebnisse,  man sollte sie nur verwenden wenn man sie wirklich braucht.
  823.   Der  Lempel-Ziv Algorithmus  kann nur entweder abgeschaltet  (/MLN) oder
  824.   eingeschaltet (/ML1)  sein. Wenn er eingeschaltet ist, sucht er nach al-
  825.   len Matches unter Verwendung einer ziemlich schnellen Hash-Tabelle, des-
  826.   halb gibts keinen Grund die Kompression abzustufen.
  827.  
  828. /O{X|D|S}{+|-}.
  829.   [O]utput e[X]tra/[D]ebug/[S]tub Daten immer (+)  oder nur wenn verworfen
  830.   (-).  Wenn es abgeschaltet ist (/O-,  Standard)  arbeitet der /G Switch
  831.   wie vorher,  i.e. Daten werden nur geschrieben, wenn sie in der Quellda-
  832.   tei verworfen werden sollen.  Wenn die /O+  Option benutzt wird, werden
  833.   die  Daten immer geschrieben (wenn die  entsprechende  Dateimaske  in /G
  834.   Option  angegeben wurde).  Falls {X|D|S} nicht angegeben  wird, gilt die
  835.   Option fuer allen Arten von Daten (Extra,Debug,Stub)  (i.e. /O+ schaltet
  836.   das Feature fuer alle X/D/S Daten ein, /O- schaltet es fuer alle ab).
  837.  
  838. /P{+|-}
  839.   Ein-  (+) oder ausschalten (-) einer Pause vor jeder Datei. Das Programm
  840.   zeigt den Namen der Datei,  die als naechstes gepackt  werden soll,  und
  841.   ermoeglich eine Auswahl,  ob sie bearbeitet oder in Ruhe gelassen werden
  842.   soll.
  843.  
  844. /Q
  845.   Alle  Konfigrationsoptionen abfragen.  Im  Prinzip  ist  das  ein buntes
  846.   Listing der lxLite.cfg Datei :-) Andere Optionen falls vorhanden, werden
  847.   ignoriert.
  848.  
  849. /R{#}
  850.   [R]e-align (ausrichten)  der Pages auf eine spezielle Boundary. (#) muss
  851.   eine Potenz von 2  sein.  Diese Option ist analog zu  LINK386`s /ALIGN:
  852.   Switch.  Viele  Programmierer kuemmern  sich  nicht darum,  dass das /A:
  853.   standardmaessig auf eine Boundary von  512  (ein Sektor) gesetzt ist und
  854.   richten jede  Page  der  ausfuehrbaren  Module  auf  512  Byte  aus. Das
  855.   Ergebnis ist ein  Haufen unbenutzter Platz  innerhalb der Programmdatei.
  856.   Man kann nun solche Dateien mit einer anderen /ALIGN: Option neu linken.
  857.   Standardmaessig ist /R:4.  Um lxLite  zu zwingen sich wie  LINK386, muss
  858.   man  /R:512 verwenden. Das ist equivalent zu /ASS :-) .
  859.  
  860. /S{+|-}
  861.   Zeigen (+)  oder nicht zeigen (-)  der aktuellen Konfiguration.  Das ist
  862.   ganz brauchbar,  um mal zu schauen welche Einstellungen in der CFG-Datei
  863.   gespeichert  sind,  besonders  bei  verketteten  Konfigurationen  (siehe
  864.   weiter  unten).   Beispiel:   lxLite  /CDEFAULT  /S  zeigt  die
  865.   standardmaessigen Einstellungen.
  866.  
  867. /T{#}
  868.   Die mit # spezifizierte Datei als neuen DOS-Stub verwenden. Ein DOS-Stub
  869.   ist eine  kleine  DOS-.EXE-Datei,  die in eine  OS/2`s LX-Datei gelinked
  870.   wird, damit das Programm eine Fehlermeldung ausgibt, wenn es von DOS aus
  871.   gestartet wird. Normalerweise sieht das etwa folgend aus:
  872.  
  873.   Dieses Programm laeuft nur unter OS/2
  874.  
  875.   Mit  lxLite  kommen  2  DOS-Stub-Programme  mit:  stub_min.bin  und
  876.   stub_vdm.bin.  Der  erste ist ein Standard-`Schreib geht nicht und Ende`
  877.   Typ,  aber er ist etwas kleiner als die ueblichen DOS-Stub-Programme die
  878.   von den ueblichen Linkern erzeugt werden.  Der zweite ist  ein Stub, der
  879.   eine  neue OS/2-Session startet und das Programm  daraus  startet. Falls
  880.   OS/2  nicht  gefunden  wird,  die  uebliche  Fehlermeldung  produziert.
  881.   Standardmaessig  laesst  stub_vdm.bin  OS/2  den  Sitzungstyp bestimmen.
  882.   Alternativ  dazuy,  kann  man  den  Sitzungstyp  auch  in  stub_vdm.bin
  883.   festlegen. Dafuer braucht man einen Hexeditor - man muss nach dem String
  884.   `SesType->' im Stub suchen und das Byte, das unmittelbar nach dem  Pfeil
  885.   kommt (->)  durch den gewuenschten Sitzungstype ersetzen, wobei folgende
  886.   Tabelle gilt:
  887.  
  888.      00 - OS/2 session manager determines type (default)
  889.      01 - OS/2 full-screen session
  890.      02 - OS/2 windowed session
  891.      03 - PM application
  892.      04 - VDM full-screen session
  893.      07 - VDM windowed session
  894.  
  895. /U{+|-}
  896.   Ein- (+) oder ausschalten (-) des Entpackens einer Datei vor dem Packen.
  897.   lxLite weiss wie man  beide  der  beschriebenen  Methoden  zum Entpacken
  898.   verwendet,  deshalb ist die Option  standardmaessig  ist eingeschaltet.
  899.   Ausschalten ist nur dann sinnvoll, wenn Zeit gespart werden soll.
  900.  
  901. /V{+|-}
  902.   Verbose  (zeigt  ein  ganzen  Haufen  Dateiinformationen)  Das  ist der
  903.   Schalter fuer Neugierige:-)  Mit /V+ zeigt lxLite ein paar Informationen
  904.   ueber  die bearbeitete Datei  an  (um  komplette  Information  ueber .LX
  905.   Dateien zu bekommen, rate ich jedem exeHdr.EXE aus dem OS/2 Programmer`s
  906.   Toolkit zu verwenden).
  907.  
  908. /W{+|-}
  909.   Ein- (+) oder ausschalten (-) ob das Ergebnis des Packens auf die Platte
  910.   geschrieben werden soll.  Standardmaessig ist es eingeschaltet (nona!),
  911.   aber du  kannst  es  ausschalten falls du  die  Informationen  ueber /V+
  912.   anschauen willst,  ohne die Datei neu zu packen und frisch zu schreiben.
  913.   Diese Option kann auch fuer debugging der Optionen nuetzlich sein.
  914.  
  915. /X{+|-}
  916.   e[X]pandieren  (+)  oder  Packen (-)  der uebergebenen Dateien.  Diesen
  917.   Switch  verwendet man,  um  Dateien zu  entpacken.  lxLite  kann  sowohl
  918.   Dateien, die es selbst komprimiert hat, als auch solche, die von anderen
  919.   Programmen  mit  den  Standardmethoden  gepackt  wurden.  (i.e. Resource
  920.   Compiler,  LINK386,  REPACK).  /X-  ist nicht identisch mit der /cUnpack
  921.   Option.
  922.  
  923. /Z{#}
  924.   Diese  Option  setzt  den  `threshold`  fuer  lxLite  und  hilft  so
  925.   festzustellen,  ob eine Stub ein `dummy`  ist oder ob er  eine spezielle
  926.   Funktion hat. Es gibt einige Programme (zum Beispiel, \os2\xdfloppy.exe)
  927.   die sowohl unter DOS als auch unter OS/2  laufen - in solchen Programmen
  928.   ist die DOS Executable in der  OS/2` LX als ein DOS stub implementiert.
  929.   Standardmaessig (wenn man einfach /Z  benutzt)  lxLite haelt jeden Stubs
  930.   der groesser als 1024 Bytes ist, fuer einen funktionellen, und daher hat
  931.   die  /T{#} Option auf diese keinen Effekt.
  932.  
  933. /?,/H
  934.   Zeigt eine  kurze Hilfe an.  Diese  ist ganz  brauchbar,  wenn man einen
  935.   Switch aus der ganzen Liste vergessen hat:-)
  936.  
  937. ---------------------------------------------------------------------------
  938. Das .CFG Dateiformat ist so  simpel wie  moeglich:  Es ist eine reine ASCII
  939. Textdatei,  welche mit jedem beliebigen Texteditor bearbeitet  werden kann.
  940. Jedes Zeichen nach einem Strichpunkt ';' wird ignoriert, i.e. damit koennen
  941. Kommentare in die Konfigurationsdatei eingesetzt werden:
  942.  
  943. ; Diese Zeile ist ein Kommentar
  944.  
  945. Jede  Zeile,  die mit  einem  Wort  und  einem  Doppelpunkt  beginnt (z.B.:
  946. "Wort:")  wird als einzelne Konfiguration behandelt. Das Wort identifiziert
  947. die Konfiguration.
  948.  
  949. Das ist ein Beispiel fuer einen Konfigurationseintrag:
  950.  
  951. FAILSAFE: /APP /B- /G+ /R4 /MR2 /ML1 /P- /U+ /V-
  952.  
  953. Wie man sieht stehen nach dem Doppelpunkt beliebige Switches,  wie  man sie
  954. auch in  der  Kommandozeile  nach  lxLite  schreiben  wuerde.  Rekursive /C
  955. Optionen  werden  nicht  ignoriert,  so  dass  man  mehrere Konfigurationen
  956. aneinander binden  kann,  aber die /C Option wird  als letztes verarbeitet,
  957. das heisst von zwei  ueberlappenden  Optionen wird nur die  letzte effektiv
  958. sein. Als Beispiel:
  959.  
  960. here: /app /b- /g+
  961. da  : /ass /b+ /p+ /chere
  962.  
  963. "lxLite /cda "  ist also gleichbedeutend mit "lxLite /app /b- /p+ /g+". Man
  964. beachte,  dass  lxLite  auch  weitere  Aufrufe  auf  dieselbe Konfiguration
  965. ignoriert,  um unendliche  Schleifen zu  vermeiden.  Das  bedeutet, "lxLite
  966. /cOne /" wird die `One` Konfiguration nur EINMAL laden.
  967.  
  968. 5. Fehlermeldungen
  969. ------------------
  970.  
  971.   Wie  die  allermeisten  normalen  Programme  erzeugt  lxLite  manchmal
  972. Fehlermeldungen :-)  Manche von Ihnen erscheinen  in aehnlichen Situationen
  973. haben aber  unterschiedliche  Ausloeser.  Hier  ist  eine  kurze  Liste der
  974. haeufigsten Fehler:
  975.  
  976.   * Invalid Konfiguration Datei format:
  977.    Ungueltiges Format der Konfigurationsdatei. Selbsterklaerend:-)
  978.  
  979.   * Error reading Konfiguration Datei:
  980.    Diese  Meldung wird  nur generiert,  wenn die Konfigurationsdatei phy-
  981.    sisch nicht lesbar ist. Das Programm erzeugt keine Fehlermeldung falls
  982.    die Konfigurationsdatei einfach fehlt.
  983.  
  984.   * Error writing Konfiguration Datei:
  985.    Fehler beim Schreiben der Konfigurationsdatei. Selbsterklaerend:-)
  986.  
  987.   * Error reading executable
  988.    Diese  Meldung wird  generiert,  wenn die Programmdatei physisch nicht
  989.    lesbar ist.
  990.  
  991.   * error writing executable
  992.    Diese Meldung wird  generiert,  wenn die Programmdatei  nicht mehr auf
  993.    die Platte geschrieben werden kann.  Das kann dann passieren, wenn auf
  994.    der Platte zuwenig Platz ist, lxLite selbst ueberprueft das nicht.
  995.  
  996.   * invalid executable file format
  997.    Die Datei ist nicht vom Format [L]inear  E[x]ecutable. Bei EXE-Dateien
  998.    kann  diese  Meldung  auftreten,  wenn  sie  im  alten,  '[N]ew  [E]xe
  999.    (bwhahaha)' Format sind oder eine DOS-EXE-Datei oder eine WinDOS- EXE-
  1000.    Datei.
  1001.  
  1002.   * unsupported executable format revision
  1003.    Diese Meldung wird  generiert (vielleicht:-),  wenn  die Programmdatei
  1004.    eine andere Dateiformatrevision hat als 0.  Da OS/2 Warp normalerweise
  1005.    nur mit Revision 0  arbeitet,  duerfte dieser Fehler normalerweise nie
  1006.    auftreten.
  1007.  
  1008.   * invalid word/dword ordering in executable
  1009.    Die Datei verwendet die 'little-endian' Byte order. Wahrscheinlich ist
  1010.    sie nicht fuer eine Intel-Plattform-Maschine gedacht.
  1011.  
  1012.   * executable target ist an unsupported CPU type
  1013.    Das kann passieren,  falls die Ziel CPU eine andere als  286, 386, 486
  1014.    oder P5 ist.
  1015.  
  1016.   * executable target ist an unsupported OS
  1017.    Das  heisst,  dass die Programmdatei nicht  fuer  OS/2  ist. WinDOS 95
  1018.    verwendet ein aehnliches  Format,  aber  seine  Kennung  ist  nicht LX
  1019.    sondern  LE,  daher  sollte  es  normalerweise  eine  'invalid format'
  1020.    Meldung geben.
  1021.  
  1022.   * unknown entry bundle type in executable
  1023.   * unknown page flags in executable
  1024.   * invalid object page detected in executable
  1025.   Diese alle bedeuten, dass lxLite etwas ueber die interne Struktur nicht
  1026.    versteht.  Ich bitte um Benachrichtigung,  falls jemand Dateien findet
  1027.    bei denen diese Fehlermeldungen auftreten.
  1028.  
  1029.   * nicht enough memory to load executable
  1030.    Ich glaube nicht, dass dieser Fehler unter OS/2 auftreten kann:-) Eher
  1031.    wird  eine  'Kein Platz mehr  im SWAPPER.DAT'  Meldung auftauchen. Wie
  1032.    auch immer,  ich finde,  es war keine gute Idee  der IBM-Programmierer
  1033.    einen Fehler zu erzeugen,  statt auf die Speicheranfrage einfach einen
  1034.    NIL-Pointer zurueckzugeben:-(
  1035.  
  1036. 6. To-do-Liste
  1037. --------------
  1038.  
  1039.   Das ist eine Liste aller Features,  die plane  in zukuenftigen Versionen
  1040. einzubauen.  Jede Anregung  ist willkommen,  wie  man mich  erreicht, siehe
  1041. letztes Kapitel.
  1042.  
  1043.  * Vielleicht eine  Moeglichkeit,  den  LX  Stub  in  VX-REXX Programmen zu
  1044.   packen; Ich weiss nur nicht obs wirklich gebraucht wird, der Unterschied
  1045.   in der Groesse macht gerade mal 18K aus - lxLite kann das echte Programm
  1046.   nicht packen,  da es  1.)  ausserhalb der LX-Struktur ist 2.) irgendwie
  1047.   verschluesselt ist und  solche  Daten  ueberhaupt  nicht  gepackt werden
  1048.   koennen, PKZIP nicht einmal PKZIP kann das.
  1049.  
  1050.  * Vielleicht eine  'extra-pack'-Option,  ich haette da eine  Idee, wie man
  1051.   Programmedateien  wirklich  klein kriegt (kleiner als  DOS-Packer jeden-
  1052.   falls:-);  diese  Programme  wuerden  dann  aber  nicht  so  wie ueblich
  1053.   arbeiten -  sie waeren immer 'unlocked'  (siehe auch das UNLOCK-Utility)
  1054.   i.e.  sie werden im Swapfile landen,  wenn nicht genaug Speicher da ist,
  1055.   sie werden nicht langsamer,  aber das Swapfile wuerde dramtisch wachsen,
  1056.   wenn so  ein Programm  gestartet wuerde.  Daher,  sagt mir ob  ihr sowas
  1057.   haben wollt, wenns genug Nachfrage gibt, mache ich es.
  1058.  
  1059. 7. Bekannte Fehler und Einschraenkungen
  1060. --------------------------------------
  1061.  
  1062.   Hier ist eine Liste von Programmen, die sich aus irgendeinem Grund nicht
  1063. packen lassen, probieren sinnlos:
  1064.  
  1065.   * PMJPEG v1.5 bis 1.74. Wie auch immer, sogar IBM`s REPACK kann es nicht
  1066. packen,  ich denke,  dass  es  sich  entweder  um einen Bug  im Linker, der
  1067. benutzt  wurde,  um  es  zu  generieren  (die  ganze EXE hat  eine seltsame
  1068. Struktur) oder eine Art debug-Schutz (Pruefsummen?).
  1069.  
  1070.   * VX-REXX-Programme.  Der Hauptteil des  Programms  (der verschluesslte
  1071. REXX-Code)  wird  einfach  an  einen  kleinen  LX-Stub  angehaengt.  Diese
  1072. Programme  haben  eine  unbekannte  Struktur  und  wenn  lxLite  den  Stub
  1073. komprimiert, funktionieren sie ueberhaupt nicht mehr.
  1074.  
  1075.   * Watcom C & C++ v>=10.0. Schaut so aus als wuerde Watcom gerne Muell an
  1076. die Dateien anhaengen.  Diese Dateien sind dafuer gedacht, sowohl unter DOS
  1077. als auch unter OS/2 zu laufen und haben ebenfalls eine seltsame Struktur.
  1078.  
  1079.   * ZIPBRAND v1.11.  Es  ueberprueft,  ob sein .EXE-File veraendert wurde,
  1080. vermutet einen Virus und will dann nicht mehr laufen [Ergaenzung des Ueber-
  1081. setzers].
  1082.  
  1083.   *  InterCom.
  1084.  
  1085.  
  1086. 8. Den Autor kontaktieren
  1087. -------------------------
  1088.  
  1089. Via Email bin unter folgenden Adressen erreichbar:
  1090.  
  1091. FIDOnet:  2:5030/84.5 (ist mir am Liebsten)
  1092. Internet: bit@freya.etu.ru
  1093.  
  1094. Enjoy,
  1095.  _\ndy
  1096.  
  1097. 9. Der Uebersetzer
  1098. -----------------
  1099.  
  1100. Ich war von Andys Programm  so  begeistert,  dass ich ihm spontan angeboten
  1101. habe,  fuer ihn die Dokumentation der Version 1.01  ins Deutsche  zu ueber-
  1102. setzen.  Manches  klingt  etwas holprig,  aber  erstens mache  ich  das nur
  1103. hobbymaessig, zweitens bin ich kein professioneller Programmierer. Aber ich
  1104. hoffe,  es hilft trotzdem etwas.  Die Uebersetzung zu 1.1.5 ist bereits ein
  1105. kleines bisschen  weniger holprig und enthaelt  etwa  60 Tippfehler weniger
  1106. als die zu 1.0.1.
  1107.  
  1108. Via  Email bin unter folgenden  Adressen  erreichbar  (obwohl  das ziemlich
  1109. sinnlos ist, da ich ausser der Uebersetzung nichts beigesteuert habe):
  1110.  
  1111. FIDOnet:  Herwig Bauernfeind, 2:312/5.35 (ist auch mir am Liebsten)
  1112. InterNet: H_BFD@fidonet.at (funktioniert zur Zeit aber nicht so gut)
  1113.  
  1114.  
  1115. ΓòÉΓòÉΓòÉ 1.6. Error messages ΓòÉΓòÉΓòÉ
  1116.  
  1117.  
  1118.  
  1119. Error messages 
  1120.  
  1121. Like most normal programs :-) lxLite can eventually generate error messages. 
  1122. Some of them can appear in similar conditions, but caused by different causes. 
  1123. Here is a short list of the most frequent errors: 
  1124.  
  1125.  Invalid configuration file format 
  1126.            Self-explaining, I think :-) 
  1127.  Error reading configuration file 
  1128.            Self explaining. 
  1129.  error reading executable 
  1130.            This is generated if executable is physically unreadable. 
  1131.  error writing executable 
  1132.            This is generated if executable cannot be written onto disk. The 
  1133.            cause can be the insufficience of disk space - lxLite does not check 
  1134.            for this particular error. 
  1135.  invalid executable file format 
  1136.            The file is not in [L]inear [E]xecutable. Note that you can get this 
  1137.            message for files with .EXE extension in the cause they are in old, 
  1138.            'New Exe' (bwhahaha) format or DOS executable or winDOS executable. 
  1139.  unsupported executable format revision 
  1140.            This error can happen (may be :-) if you try to process an 
  1141.            executable with other revision number than 0. OS/2 Warp works only 
  1142.            with revision 0, so you will not normally encounter this problem. 
  1143.  invalid word/dword ordering in executable 
  1144.            The executable uses little-endian byte order. Seems that it is not 
  1145.            for Intel platform machines. 
  1146.  executable target is an unsupported CPU type 
  1147.            This happen if the target CPU is other than 286, 386, 486 or P5. 
  1148.  executable target is an unsupported OS 
  1149.            This mean that the executable is not for OS/2. Windos and windos 95 
  1150.            uses similar format, but its magic number is not `LX` but `LE`, so 
  1151.            usualy program will abort with an `invalid format` error. 
  1152.  unknown entry bundle type in executable 
  1153.  unknown page flags in executable 
  1154.  invalid object page detected in executable 
  1155.            It`s something about internal structure that lxLite doesnt know 
  1156.            about. Please mail me if you encounter such files. 
  1157.  not enough memory to load executable 
  1158.            I doubt this error can happen in OS/2 :-) Rather a swap-file full 
  1159.            fault will occur. BTW, it`s a bad idea of IBM programmers to trap 
  1160.            instead of returning NIL pointer on a memory request :-( 
  1161.  invalid stub 
  1162.            Stub size must be greater or equal to 64 bytes. This requirement is 
  1163.            due to limitation that offset to LX header must reside on the offset 
  1164.            60 in the stub; however it is unlikely that you`ll got this message 
  1165.            since lxLite will add trailing zeros to such stubs. 
  1166.  error reading EAs 
  1167.            Cannot explain :-) 
  1168.  error writing EAs 
  1169.            this one too :-) 
  1170.  invalid fixup record 
  1171.            lxLite above 1.1.8 will depack and try to re-pack fixup records. 
  1172.            Previous versions just read/write fixup table as a bunch of bytes; 
  1173.            new versions will try to see what they contain. This error can 
  1174.            happen when converting NE files since some of them ( TFTP.EXE for 
  1175.            example) contains so-called OSFIXUP records that is outdated and 
  1176.            don`t have analogue in LX executable format. However, these 
  1177.            executables are seldom encountered (I`ve seen only mentioned TFTP). 
  1178.            I don`t know an workaround for this: you cannot convert such NE 
  1179.            files. 
  1180.  bound application 
  1181.            Executable is an bound application. Bound application is an NE 
  1182.            executable which runs both in DOS and OS/2 mode. These are NOT two 
  1183.            different executables bundled together (as most dual-mode programs 
  1184.            are done: you can do this with lxLite inserting an different DOS 
  1185.            stub into LX executable) but rather an tiny 'OS/2 emulator for DOS 
  1186.            mode' binded together with NE file. These are usually programs with 
  1187.            the simplest possible user interface - such as most executables from 
  1188.            MASM 6.0 package. These executables can still be converted by 
  1189.            overriding this with the /NB+ option, but they won`t run in DOS mode 
  1190.            anymore. 
  1191.  doesn`t support long filenames 
  1192.            Executable is not long file name - aware. NE files uses a bit in NE 
  1193.            header which shows whenever executables handle long file names. If 
  1194.            it isn`t, OS/2 doesn`t show him LFN (just as for DOS programs). In 
  1195.            some (most that I seen) cases this is of no importance since such 
  1196.            executables doesn`t work with files (for example ARP.EXE or 
  1197.            INETD.EXE from TCP/IP). You can override this error message by using 
  1198.            the /NL+ option. 
  1199.  incompatible segment definition 
  1200.            NE executable contains an segment which don`t have direct analogue 
  1201.            in LX executable format. This is done mostly since I haven`t seen 
  1202.            executables with such segments (namely GDT and HUGE). If you 
  1203.            encounter any, let me know, please. 
  1204.  bad executable segment 
  1205.            Executables contain an bad segment definition (either it is bigger 
  1206.            than its declared size, or it is partially (or fully) out of 
  1207.            executable file). If it works, I will be surprised :-) 
  1208.  
  1209.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  1210.  
  1211.  Title page | Introduction | Features | Command-line switches | Configuration 
  1212.  file | Bugs and limitations | Thanks... | Utility Pack | Author info 
  1213.  
  1214.  
  1215. ΓòÉΓòÉΓòÉ 1.7. Features ΓòÉΓòÉΓòÉ
  1216.  
  1217.  
  1218.  
  1219. Features 
  1220.  
  1221. lxLite compresses the files in the same way as LINK386 does. There is NO way of 
  1222. implementing an effective (by memory requirements) compression method other 
  1223. than those two which Warp kernel knows and will recognize (or the only for 2.x) 
  1224. since unlike DOS OS/2 does paging and pages are loaded by kernel paging 
  1225. mechanism which runs at ring 0. There is no documented way to intrude inside 
  1226. the OS/2 kernel even from device drivers (which also runs in ring 0). 
  1227.  
  1228. So, here is a brief description of these two algorithms: 
  1229.  
  1230.    1. Run-length packing. This is generally the same method that Microsoft C 
  1231.       for DOS uses. It gives VERY bad results because the structure of 
  1232.       executable files aren`t suited for that kind of packing. For example, PCX 
  1233.       files uses approximatively the same packing method. 
  1234.    2. Kinda Lempel-Ziv algorithm. Lempel-Ziv is the same method which almost 
  1235.       all DOS executables packers use - LZEXE, PKLITE, PGMPAK etc. The method 
  1236.       standartized for OS/2 executable files is not the most effective (IMHO). 
  1237.       Other thing is that OS/2 executable have a different loading algorithm in 
  1238.       contrast to DOS executables - parts of OS/2 executables are loaded only 
  1239.       when they are needed. So, Lempel-Ziv dictionary cannot cross the bound of 
  1240.       a single page (4096 bytes). Because of this, it gives not such good 
  1241.       results as it can. 
  1242.  
  1243.  lxLite can use any of these two methods either for packing or unpacking. 
  1244.  Generally the second gives best compression rates, but may be (?) there are 
  1245.  some files on which first will work better. Because of this the default is to 
  1246.  try to pack page using both methods and then choose the smaller result. lxLite 
  1247.  can be used as well for unpacking the files that previously have been packed - 
  1248.  either by lxLite, LINK386 or REPACK from IBM. In some (seldom) cases you 
  1249.  should specify the /F (force) option to force repacking - otherwise lxLite can 
  1250.  give the "module is already packed" message. 
  1251.  
  1252.  What kind of files you can compress? The LX format is used almost everywhere 
  1253.  in OS/2: almost everything is in LX format. So, you don`t have to limit only 
  1254.  to .EXE files: you can pack .DLL, .PDR, .QPR, .DRV, .FON, .SYS (Virtual Device 
  1255.  Drivers (VDDs) in \OS2\MDOS) as well. You can run lxLite on virtually any 
  1256.  file: if it is not in Linear Executable (LX) format it will fail to process 
  1257.  it. 
  1258.  
  1259.  Versions above 1.1.7 of lxLite can also convert to LX and compress most NE 
  1260.  executables: this is a tricky thing but seems that in most cases it works 
  1261.  well. If it cannot be acomplished, lxLite will give you an error message. If 
  1262.  you don`t like this, you can disable this by using the /N- option on the 
  1263.  command line. By default lxLite will convert *only* .EXE and .DLL files, which 
  1264.  doesn`t contain resources, are long-filenames aware (.EXEs) and are not 'bound 
  1265.  executable's (.EXEs). 
  1266.  
  1267.  Some conversion considerations: NE files have a bit in the header that shows 
  1268.  if the module handles long file names (since OS/2 v1.0 didn`t have long file 
  1269.  names: HPFS was introduced in version 1.2). Executables with this bit set will 
  1270.  see files with LFNs, when this bit is not set whey will work just like DOS 
  1271.  programs do, i.e. won`t see files with LFN. Many NE executables doesn`t have 
  1272.  this bit set, although they don`t care at all about filenames (for example, 
  1273.  ARP.EXE, IFCONFIG.EXE from TCP/IP). Moreover, many executables that even works 
  1274.  with file names will work as well with the long file names (for example I 
  1275.  tried some UUENCODE/UUDECODE clones). By default lxLite will fail to convert 
  1276.  such files into LX since LX modules doesn`t have such a bit in header, but you 
  1277.  can force conversion by using the /NL switch. Default configuration file 
  1278.  instructs lxLite to ignore this bit for all known to me kinds of dynamic-link 
  1279.  libraries: DLL, DRV, FON, PDR, QPR (although last four extensions, as far as I 
  1280.  know, always are LX modules). 
  1281.  
  1282.  Also there is a number of NE executables (for example most EXEs from SIO or 
  1283.  MASM 6.0 package) which are so-called 'bounded' (also known as "Family API") 
  1284.  executables. A bounded executable can run both under DOS and OS/2, but not the 
  1285.  way as LX modules do (one file contains TWO different executables; DOS 
  1286.  executable is binded as stub to OS/2 LX executable), but other way: DOS stub 
  1287.  is a small program which loads and executes NE executable under plain DOS, and 
  1288.  emulates a (very) limited set of OS/2 API calls via BIOS and DOS interrupts. 
  1289.  By default lxLite will also fail to convert such executables into LX modules 
  1290.  since resulting executables won`t run under DOS anymore: however, if you have 
  1291.  PROTECTONLY=YES in CONFIG.SYS or simply don`t need the executable to run under 
  1292.  DOS, you can change the behavior of lxLite using the /NB switch on the command 
  1293.  line. 
  1294.  
  1295.  Another incompatibility between LX and NE files are resources. If NE module 
  1296.  contains resources and they`re loaded using the Dos16GetResource API function, 
  1297.  API will return an error code when trying to load same resources from an LX 
  1298.  file. So, by default, lxLite will fail to convert NE modules that contains 
  1299.  resources (however, there are not too much such modules). However, you can 
  1300.  override this by using the /NR switch. As a example of a DLL with resources 
  1301.  you can look at \TCPIP\DLL\TCPMRI.DLL. Many NE utilites (such as ARP, PING 
  1302.  etc) uses Dos16GetResource to load resources from TCPMRI.DLL, and will display 
  1303.  an 'Failure in national language support' instead of almost all messages. 
  1304.  There is an alternative API function for 16-bit modules: DosGetResource2, 
  1305.  which will work well for an LX file. So if you`re sure that all resources in a 
  1306.  file are loaded exclusively through DosLoadModule2, you can force lxLite to 
  1307.  convert such NE files by using the /NR switch. 
  1308.  
  1309.  lxLite version 1.00 and above can replace executable modules even if they are 
  1310.  currently in use. In this case it will warn you that module is already in use 
  1311.  by another process, and will propose you either to replace it by its packed 
  1312.  version or either to skip this module. Choose at your wish, but keep in mind 
  1313.  that the modules you have replaced are kept now (their old versions) in 
  1314.  memory, so they eat up your swapfile space. Better reboot as soon as you have 
  1315.  this opportunity. 
  1316.  
  1317.  You can also consider compressing your entire \OS2\*\ directory structure, it 
  1318.  will give you a lot of extra space and absolutely no overhead! The time spent 
  1319.  for decompressing executables is recovered by the time which system does not 
  1320.  spend for reading the executable from HD because it`s much smaller! You can 
  1321.  even compress the DLLs which are currently locked (lxLite will unlock them, 
  1322.  but swap file will increase, so you will need to reboot after this). For this, 
  1323.  you have to type:  lxLite #:\os2\* /r /yur 
  1324.  
  1325.  where # is drive letter of your boot drive. 
  1326.  
  1327.  Version 1.1.0 and above detects executables which contains some data after the 
  1328.  LX structure itself (i.e. what`s called in DOS overlay data). For example 
  1329.  Watcom`s binded executables (such as WCC.EXE versions >= 10.0) and Watcom 
  1330.  Visual Rexx executables have such structure. In this case lxLite shows an 
  1331.  warning message and asks for confirmation whenever you really want to pack 
  1332.  such executable. It is STRONGLY recommended that you backup the executable in 
  1333.  question before trying to do it because it is VERY possible that it will 
  1334.  become non-functional if something gets changed in it (because lxLite does not 
  1335.  change any of possible pointers in data binded to LX as in VREXX executables). 
  1336.  Default configuration file instructs lxLite to back up automatically such 
  1337.  executables (by using the /BX switch). All backed up filenames are stored by 
  1338.  default into the \lxLite.bak directory. 
  1339.  
  1340.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  1341.  
  1342.  Title page | Introduction | Command-line switches | Configuration file | Error 
  1343.  messages | Bugs and limitations | Thanks... | Utility Pack | Author info 
  1344.  
  1345.  
  1346. ΓòÉΓòÉΓòÉ 1.8. Introduction ΓòÉΓòÉΓòÉ
  1347.  
  1348.  
  1349.  
  1350. Introduction 
  1351.  
  1352. I think all of us end-users are really bored of the big size and reduced 
  1353. functionality of all those modern executables written to run under OS/2 (windos 
  1354. too). I don`t understand why they are so big, because most compilers, even IBM 
  1355. CSet/VACPP generate a modest size code. For a widely known example let`s take 
  1356. MultiMaint. What a complex task it performs that its executable occupies more 
  1357. that 700K? I don`t understand. Moreover, WHY duplicate (and triplicate) almost 
  1358. the same executable as it does (I mean MultiSafe and IniMaint which comes along 
  1359. with MultiMaint). It performs a nice work, but it is TOO big for the task it 
  1360. acomplishes. OS/2 kernel have the same size, and performs INCOMPARABLY much 
  1361. more things. I cannot afford such a large pile of shit on my HD, so I killed 
  1362. MultiMaint & C┬░. :`-(. Too bad for its author. ; 
  1363.  
  1364. Here is a workaround for this. You can just pack the executable so it will be 
  1365. twice smaller and still perform the same task. Alas, it will grab the same 
  1366. amount of memory as original executable does - this is the fault of the 
  1367. program`s author. But it will load (and swap) faster in most cases (unless you 
  1368. have a Fast UltraWide SCSI 2 HD :-) 
  1369.  
  1370. As far as I know there is only one program which does the same - REPACK from 
  1371. IBM (EWS?). But compared to lxLite it gives less compression using same 
  1372. algorithm. For example, COURIER.FON from OS/2 v8.192 it compresses into 44K and 
  1373. lxLite into 34K. Feel the difference. BTW, LINK386+Resource Compiler compiles 
  1374. COURIER.FON also into 44K-size file. This makes me think that they use the same 
  1375. common compression code. 
  1376.  
  1377. I`ve packed ALL my executables (incuding but not limiting to ?:\os2\*.exe, 
  1378. ?:\os2\dll\*.* and ?:\os2\dll\ibmnull;laserjet) and my system is stiil working 
  1379. fine :-) One of lxLite users (Pavel Roskin) observed that lxLite packs even 
  1380. os2krnl :-) This is a very nice feature to create a SINGLE OS/2 boot diskette, 
  1381. moreover, since version 1.1.8 lxLite has the ability to pack even device 
  1382. drivers, so you can even gain a little of free space on that diskette, enough 
  1383. to put there say FC/2 or other text-mode shell. 
  1384.  
  1385. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  1386.  
  1387. Title page | Features | Command-line switches | Configuration file | Error 
  1388. messages | Bugs and limitations | Thanks... | Utility Pack | Author info 
  1389.  
  1390.  
  1391. ΓòÉΓòÉΓòÉ 1.9. lxLite_ru.txt ΓòÉΓòÉΓòÉ
  1392.  
  1393.        ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  1394.        LX lite - ╨┐╨░╨║╨╛╨▓╤ë╨╕╨║ ╨┤╨╗╤Å ╨▓╤ï╨┐╨╛╨╗╨╜╤Å╨╡╨╝╤ï╤à ╤ä╨░╨╣╨╗╨╛╨▓ OS/2
  1395.        ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  1396.  
  1397.   *  ╨¡╤é╨╛╤é ╤é╨╡╨║╤ü╤é - ╨▓╤ü╨╡╨│╨╛ ╨╗╨╕╤ê╤î ╤ü╨╛╨║╤Ç╨░╤ë╨╡╨╜╨╜╨░╤Å ╨▓╨╡╤Ç╤ü╨╕╤Å ╨░╨╜╨│╨╗╨╕╨╣╤ü╨║╨╛╨╣ ╨┤╨╛╨║╤â╨╝╨╡╨╜╤é╨░╤å╨╕╨╕. ╨ö╨╗╤Å
  1398.  ╨┐╨╛╨╗╤â╤ç╨╡╨╜╨╕╤Å  ╨┐╨╛╨╗╨╜╨╛╨╣ ╨╕╨╜╤ä╨╛╤Ç╨╝╨░╤å╨╕╨╕ ╨┐╨╛ ╨┤╨░╨╜╨╜╨╛╨╣ ╨┐╤Ç╨╛╨│╤Ç╨░╨╝╨╝╨╡ ╨╛╨▒╤Ç╨░╤ë╨░╨╣╤é╨╡╤ü╤î ╨║ ╨╜╨╡╨╣. ╨ù╨┤╨╡╤ü╤î ╨╢╨╡
  1399.  ╨┐╤Ç╨╕╨▓╨╡╨┤╨╡╨╜╤ï  ╤é╨╛╨╗╤î╨║╨╛  ╨╛╤ü╨╜╨╛╨▓╨╜╤ï╨╡  ╨╝╨╛╨╝╨╡╨╜╤é╤ï ╨╛╤é╤Ç╨░╨╢╨╡╨╜╨╜╤ï╨╡ ╨▓ ╨░╨╜╨│╨╗╨╕╨╣╤ü╨║╨╛╨╣ ╨▓╨╡╤Ç╤ü╨╕╨╕. ╨¥╨░╨┤╨╡╤Ä╤ü╤î
  1400.  ╤ç╤é╨╛  ╨╝╨╛╨╣  ╤â╨▒╨╛╨│╨╕╨╣  ╨░╨╜╨│╨╗╨╕╨╣╤ü╨║╨╕╨╣ ╨╜╨╡ ╨┐╨╛╨╝╨╡╤ê╨░╨╡╤é ╨Æ╨░╨╝ ╨┐╨╛╨╜╤Å╤é╤î ╤ç╤é╨╛ ╨╢╨╡ ╤é╨░╨╝ ╨╜╨░ ╤ü╨░╨╝╨╛╨╝ ╨┤╨╡╨╗╨╡
  1401.  ╨╜╨░╨┐╨╕╤ü╨░╨╜╨╛.
  1402.  
  1403.  1. ╨Æ╤ü╤é╤â╨┐╨╗╨╡╨╜╨╕╨╡
  1404.  ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  1405.   ╨£╨╡╨╜╤Å  ╨╛╤é╨║╤Ç╨╛╨▓╨╡╨╜╨╜╨╛ ╨┤╨╛╤ü╤é╨░╨╗╨╕ :-) ╨╛╨│╤Ç╨╛╨╝╨╜╤ï╨╡ ╤Ç╨░╨╖╨╝╨╡╤Ç╤ï ╤ü╨╛╨▓╤Ç╨╡╨╝╨╡╨╜╨╜╤ï╤à ╨┐╤Ç╨╛╨│╤Ç╨░╨╝╨╝, ╨┐╤Ç╨╕ ╨╕╤à
  1406.  ╨╛╨│╤Ç╨░╨╜╨╕╤ç╨╡╨╜╨╜╨╛╨╣  ╤ä╤â╨╜╨║╤å╨╕╨╛╨╜╨░╨╗╤î╨╜╨╛╤ü╤é╨╕.  ╨ƒ╨╛╤ì╤é╨╛╨╝╤â  ╤Å ╤â╨╢╨╡ ╨┐╨╛╤ç╤é╨╕ ╨│╨╛╨┤ ╨╝╨╡╤ç╤é╨░╤Ä ╨╛ ╨┐╤Ç╨╛╨│╤Ç╨░╨╝╨╝╨╡
  1407.  ╨┤╨╗╤Å OS/2 ╨║╨╛╤é╨╛╤Ç╨░╤Å ╨▒╤ï ╨┤╨╡╨╗╨░╨╗╨░ ╨┤╨╗╤Å OS/2 ╤é╨╛ ╨╢╨╡ ╤ç╤é╨╛ ╨┤╨╗╤Å DOS - lzexe, pklite, diet,
  1408.  compack,  ainexe  ╨╕ ╨╝╨╜╨╛╨│╨╛-╨╝╨╜╨╛╨│╨╛ ╨┤╤Ç╤â╨│╨╕╤à. ╨₧╨┤╨╜╨░╨║╨╛ ╨╛╨╜╨░ ╨▓╤ü╨╡ ╨╖╨░╨┤╨╡╤Ç╨╢╨╕╨▓╨░╨╗╨░╤ü╤î. ╨ƒ╤Ç╨░╨▓╨┤╨░
  1409.  ╨┐╤Ç╨╕╨╝╨╡╤Ç╨╜╨╛  ╨▓  ╨┤╨╡╨║╨░╨▒╤Ç╨╡  ╨┐╨╛ MFE.OS2 ╨┐╤Ç╨╛╤à╨╛╨┤╨╕╨╗╨░ ╨┐╤Ç╨╛╨│╤Ç╨░╨╝╨╝╨░ REPACK ╨║╨╛╤é╨╛╤Ç╨░╤Å ╨▓╤Ç╨╛╨┤╨╡ ╨▒╤ï
  1410.  ╤ç╨░╤ü╤é╨╕╤ç╨╜╨╛  ╤Ç╨╡╤ê╨░╨╗╨░  ╨┐╤Ç╨╛╨▒╨╗╨╡╨╝╤â,  ╨┐╨╡╤Ç╨╡╨┐╨░╨║╨╛╨▓╤ï╨▓╨░╤Å exe`╤ê╨╜╨╕╨║╨╕ ╨┐╤Ç╨╕╨╝╨╡╤Ç╨╜╨╛ ╤é╨░╨║ ╨╢╨╡ ╨║╨░╨║ ╤ì╤é╨╛
  1411.  ╨┤╨╡╨╗╨░╨╡╤é  LINK386  ╤ü  ╨╛╨┐╤å╨╕╨╡╨╣  /EXEPACK:2. ╨₧╨┤╨╜╨░╨║╨╛ ╤â╨▒╨╛╨│╨╕╨╣ ╨╕╨╜╤é╨╡╤Ç╤ä╨╡╨╣╤ü :-) ╨╕ ╨┐╨╛╨╗╨╜╨╛╨╡
  1412.  ╨╛╤é╤ü╤â╤é╤ü╤é╨▓╨╕╤Å  ╨╛╨┐╤å╨╕╨╣  ╨▓  ╨╜╨╡╨╣  ╨╝╨╡╨╜╤Å ╨╛╨║╨╛╨╜╤ç╨░╤é╨╡╨╗╤î╨╜╨╛ ╨┤╨╛╤ü╤é╨░╨╗╨╛, ╨╕ ╤Å ╤Ç╨╡╤ê╨╕╨╗╤ü╤Å ╨▓╨╖╤Å╤é╤î╤ü╤Å ╨╖╨░
  1413.  ╨┤╨╡╨╗╨╛  ╤ü╨╛╨▒╤ü╤é╨▓╨╡╨╜╨╛╤Ç╤â╤ç╨╜╨╛  (╨▓╨░╤Ç╨╕╨░╨╜╤é:  ╤ü╨╛╨▒╤ü╤é╨▓╨╡╨╜╨╜╨╛╨╜╨╛╨╢╨╜╨╛  ;-). ╨ƒ╨╛╨┐╤â╤é╨╜╨╛ ╨╛╨║╨░╨╖╨░╨╗╨╛╤ü╤î ╤ç╤é╨╛
  1414.  REPACK  ╨▓╤ï╨╢╨╕╨╝╨░╨╡╤é  ╨┤╨░╨╗╨╡╨║╨╛ ╨╜╨╡ ╨▓╤ü╨╡ ╨▓╨╛╨╖╨╝╨╛╨╢╨╜╨╛╨╡ ╨╕╨╖ ╨╛╨┐╤å╨╕╨╕ /EXEPACK:2. lxLite ╨┐╨░╨║╤â╨╡╤é
  1415.  ╨▓ ╤ü╤Ç╨╡╨┤╨╜╨╡╨╝ ╨┐╤Ç╨╛╤å╨╡╨╜╤é╨╛╨▓ ╨╜╨░ 10 ╨╗╤â╤ç╤ê╨╡ ╤ç╨╡╨╝ REPACK, ╤ç╤é╨╛ ╨▓ ╤ü╤â╨╝╨╝╨╡ ╨┤╨░╨╡╤é ╨▓╨╡╤ü╤î╨╝╨░ ╨╜╨╡╨┐╨╗╨╛╤à╨╛╨╣
  1416.  ╨▓╤ï╨╕╨│╤Ç╤ï╤ê.  ╨¥╨░╨┐╤Ç╨╕╨╝╨╡╤Ç  ╤ü╤é╨░╨╜╨┤╨░╤Ç╤é╨╜╤ï╨╣  COURIER.FON  ╤â ╨╝╨╡╨╜╤Å ╨╖╨░╨╜╨╕╨╝╨░╨╗ 44K (╨┐╨░╨║╨╛╨▓╨░╨╜╨╜╤ï╨╣
  1417.  REPACK`╨╛╨╝)  - ╨┐╨╛╤ü╨╗╨╡ lxLite ╨╛╨╜ ╤ü╤é╨░╨╗ ╨╖╨░╨╜╨╕╨╝╨░╤é╤î 34K. ╨ƒ╨╛╤ç╤â╨▓╤ü╤é╨▓╤â╨╣╤é╨╡ ╤Ç╨░╨╖╨╜╨╕╤å╤â :-) ╨¥╤â
  1418.  ╨╕  ╨┤╤Ç╤â╨│╨╕╨╡  ╨┐╨╗╤Ä╤ü╤ï  lxLite  - ╨┐╨╛╨▓╤ï╤ê╨╡╨╜╨╜╨░╤Å ╨║╨╛╨╜╤ä╨╕╨│╤â╤Ç╨░╨▒╨╡╨╗╤î╨╜╨╛╤ü╤é╤î, ╨╜╨░╨╗╨╕╤ç╨╕╨╡ ╨╜╨╡╨║╨╛╤é╨╛╤Ç╨╛╨╣
  1419.  ╨┤╨╛╨┐╨╛╨╗╨╜╨╕╤é╨╡╨╗╤î╨╜╨╛╨╣  ╨╕╨╜╤ä╨╛╤Ç╨╝╨░╤å╨╕╨╕  ╨▓╨╛  ╨▓╤Ç╨╡╨╝╤Å  ╨╛╨┐╨╡╤Ç╨░╤å╨╕╨╕  ╨┐╨░╨║╨╛╨▓╨║╨╕, ╨▓╨╛╨╖╨╝╨╛╨╢╨╜╨╛╤ü╤é╤î ╨▓╤ï╨▓╨╛╨┤╨░
  1420.  ╨╜╨╡╨║╨╛╤é╨╛╤Ç╨╛╨╣  ╨╕╨╜╤ä╨╛╤Ç╨╝╨░╤å╨╕╨╕  ╨╛  ╨╛╨▒╤Ç╨░╨▒╨░╤é╤ï╨▓╨░╨╡╨╝╨╛╨╝  exe`╤ê╨╜╨╕╨║╨╡  (╨┤╨╗╤Å ╨╗╤Ä╨▒╨╛╨┐╤ï╤é╨╜╤ï╤à :-) - ╤Å
  1421.  ╨┤╤â╨╝╨░╤Ä ╨▓╤ï ╨╛╤å╨╡╨╜╨╕╤é╨╡ ╨▓ ╨┐╤Ç╨╛╤å╨╡╤ü╤ü╨╡ ╤ì╨║╤ü╨┐╨╗╤â╨░╤é╨░╤å╨╕╨╕. ╨ò╤ü╨╗╨╕ ╨║╤é╨╛-╤é╨╛ ╤ü╤ç╨╕╤é╨░╨╡╤é ╤ç╤é╨╛ ╤â╨╝╨╡╨╜╤î╤ê╨╡╨╜╨╕╨╡
  1422.  EXE`╤ê╨╜╨╕╨║╨╛╨▓  ╨▓  ╤Ç╨░╨╖╨╝╨╡╤Ç╨╡  ╨▓  ╤ü╤Ç╨╡╨┤╨╜╨╡╨╝  ╤Ç╨░╨╖╨░  ╨▓  ╨┤╨▓╨░  - ╤ì╤é╨╛ ╨║╤Ç╨╛╤à╨╛╨▒╨╛╤Ç╤ü╤é╨▓╨╛, ╤é╨╛ ╤ì╤é╨░
  1423.  ╨┐╤Ç╨╛╨│╤Ç╨░╨╝╨╝╨░ ╤Å╨▓╨╜╨╛ ╨╜╨╡ ╨┤╨╗╤Å ╨Æ╨░╤ü.
  1424.   lxLite  ╨┐╤Ç╨╛╨▓╨╡╤Ç╨╡╨╜  ╨▓ ╤Ç╨░╨▒╨╛╤é╨╡ ╨╜╨░ ╨┐╤Ç╨░╨║╤é╨╕╤ç╨╡╤ü╨║╨╕ ╨Æ╨í╨ò╨Ñ ╨╝╨╛╨╕╤à ╨▓╤ï╨┐╨╛╨╗╨╜╤Å╨╡╨╝╤ï╤à ╤ä╨░╨╣╨╗╨░╤à ╨┤╨╗╤Å
  1425.  OS/2  (╨▓  ╤é╨╛╨╝  ╤ç╨╕╤ü╨╗╨╡  ╨╜╨░  c:\os2\*.exe; c:\os2\dll\*\*.*; ╨╖╨░╨▒╨░╨▓╨╜╨╡╨╡ ╨▓╤ü╨╡╨│╨╛ ╤ç╤é╨╛
  1426.  ╨┐╨░╨║╤â╨╡╤é╤ü╤Å  ╨┤╨░╨╢╨╡ OS2KRNL /thx to Pavel Roskin/) ╨╕ ╨║╨░╨║ ╨╜╨╕ ╤ü╤é╤Ç╨░╨╜╨╜╨╛ ╨▓╤ü╨╡ ╤Ç╨░╨▒╨╛╤é╨░╨╡╤é.
  1427.  ╨ƒ╨╛╨┤╤Ç╨╛╨▒╨╜╨╡╨╡  ╨╛╨▒  ╨╛╨┐╤å╨╕╤Å╤à  lxLite  ╨╕  ╨▓╤ï╨┐╨╛╨╗╨╜╤Å╨╡╨╝╤ï╤à  ╨╕╨╝╨╕ ╤ä╤â╨╜╨║╤å╨╕╤Å╤à ╨╝╨╛╨╢╨╜╨╛ ╨┐╤Ç╨╛╤ç╨╡╤ü╤é╤î ╨▓
  1428.  ╨░╨╜╨│╨╗╨╕╨╣╤ü╨║╨╛╨╣  ╨┤╨╛╨║╤â╨╝╨╡╨╜╤é╨░╤å╨╕╨╕. ╨ò╤ü╨╗╨╕ ╨╢╨╡ ╨Æ╤ï ╨╜╨╡ ╨╖╨╜╨░╨╡╤é╨╡ ╨░╨╜╨│╨╗╨╕╨╣╤ü╨║╨╛╨│╨╛, ╨╜╨╡ ╨╛╨│╨╛╤Ç╤ç╨░╨╣╤é╨╡╤ü╤î -
  1429.  ╤ü╨║╨╛╤Ç╨╡╨╡  ╨▓╤ü╨╡╨│╨╛  ╤ì╤é╨╕  ╨╛╨┐╤å╨╕╨╕  ╨Æ╨░╨╝  ╨╜╨╡ ╨╜╤â╨╢╨╜╤ï. ╨ö╨╗╤Å ╨╛╨▒╤ï╤ç╨╜╨╛╨│╨╛ ╨╖╨░╨┐╤â╤ü╨║╨░ lxLite ╨┐╤Ç╨╛╤ü╤é╨╛
  1430.  ╨╜╨░╨▒╨╡╤Ç╨╕╤é╨╡ lxLite *.exe *.dll ╨▓ ╨║╨░╤é╨░╨╗╨╛╨│╨╡ ╨▓ ╨║╨╛╤é╨╛╤Ç╨╛╨╝ ╤â ╨Æ╨░╤ü ╨╜╨░╤à╨╛╨┤╤Å╤é╤ü╤Å ╨▓╤ï╨┐╨╛╨╗╨╜╤Å╨╡╨╝╤ï╨╡
  1431.  ╤ä╨░╨╣╨╗╤ï  OS/2. ╨ò╤ü╨╗╨╕ ╨╢╨╡ ╨Æ╨░╨╝ ╤à╨╛╤ç╨╡╤é╤ü╤Å ╤Ç╨░╤ü╨┐╨░╨║╨╛╨▓╨░╤é╤î ╤ä╨░╨╣╨╗(╤ï) ╨╜╨░╨▒╨╡╤Ç╨╕╤é╨╡ ╤é╨╛ ╨╢╨╡ ╤ü╨░╨╝╨╛╨╡ ╨╜╨╛
  1432.  ╨┤╨╛╨▒╨░╨▓╤î╤é╨╡ /x.
  1433.  
  1434.  ╨í╤ç╨░╤ü╤é╨╗╨╕╨▓╨╛╨│╨╛ ╨┐╨╛╨╗╤î╨╖╨╛╨▓╨░╨╜╨╕╤Å.
  1435.  ╨É╨╜╨┤╤Ç╨╡╨╣ ╨ù╨░╨▒╨╛╨╗╨╛╤é╨╜╤ï╨╣,
  1436.  FIDOnet: 2:5030/84.5
  1437.  e-mail:  bit@freya.etu.ru
  1438.  
  1439.  
  1440. ΓòÉΓòÉΓòÉ 1.10. Command-line switches ΓòÉΓòÉΓòÉ
  1441.  
  1442.  
  1443.  
  1444. Command-line switches 
  1445.  
  1446. There are a lot of options in lxLite. I simply like options :-) So, you can 
  1447. configure almost anything in lxLite. Moreover, to protect the user from need of 
  1448. writing the same options lxLite support multiple configurations which are kept 
  1449. in a single file. lxLite comes with some example configurations (`factory 
  1450. defaults`) which are listed below: 
  1451.  
  1452. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  1453.  
  1454.  default (loaded by default) 
  1455.            It is a `work` configuration. All parameters are set to optimal 
  1456.            level of compression without too much effort applied. File backup is 
  1457.            disabled except for files that have extra data after LX structure. 
  1458.            Note that this configuration is ALWAYS loaded before any other 
  1459.            options are in effect, so even /C{#} option is executed AFTER 
  1460.            default configuration is loaded. 
  1461.  unpack (loaded for /X option) 
  1462.            This configuration is loaded when you request to unpack the file 
  1463.            (/X). By default it is empty; you can add here everything you want 
  1464.            to happen when files are unpacked. 
  1465.  ver2x 
  1466.            Optimal for pre-Warp versions of OS/2. Versions before Warp (3.0) 
  1467.            does not know of the Lempel-Ziv (/EXEPACK:2) method. DON`T PACK 
  1468.            EXECUTABLES WITH LEMPEL-ZIV`s ALGORITHM if there is a chance to run 
  1469.            your program on OS/2 v2.xx (except 2.99). 
  1470.  max 
  1471.            Tightest compression level. VERY SLOW! It is rarely needed to use 
  1472.            this configuration. 
  1473.  newStub 
  1474.            This is a particular configuration used to replace one DOS stub in 
  1475.            LX executable by another without altering anything else. You have to 
  1476.            specify a filename for new stub - this configuration only tells 
  1477.            lxLite not to depack old objects and not to pack unpacked objects. 
  1478.  minStub 
  1479.            This is a configuration which is linked to newStub and replaces 
  1480.            stubs in given files by minimal possible stub of 
  1481.            `say-error-and-exit` type. You cannot make it smaller (at least I 
  1482.            doubt it), only if you shorten the error message. 
  1483.  vdmStub 
  1484.            This configuration tells lxLite to replace in specified files stub 
  1485.            by a `run-from-VDM`-style one. This is also as short as possible :-) 
  1486.            Please read the /T{#} option description for further details. 
  1487.  info 
  1488.            Use this configuration to get the most important information about 
  1489.            executables (see option /V) without altering them. 
  1490.  exehdr 
  1491.            Shows complete information about the executable header. Module file 
  1492.            is not altered in any way. 
  1493.  exemap 
  1494.            Shows anything about the executable structure. This can generate 
  1495.            sometimes very long data sheets, so use it only if really needed. 
  1496.  map 
  1497.            Shows the memory map of the executable: memory objects and pages 
  1498.            which makes the object. 
  1499.  exp 
  1500.            Shows everything that is exported from the module (exported names 
  1501.            and exported entriy points) 
  1502.  imp 
  1503.            Shows module import tables 
  1504.  pdd 
  1505.            This configuration can be used for physical device drivers 
  1506.            (especially in NE format). 
  1507.  dll 
  1508.            This configuration is useful for dynamic-link libraries. 
  1509.  
  1510.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  1511.  
  1512.  To use a specific configuration use the /C:# switch where # is configuration`s 
  1513.  identifier. Settings are loaded from file lxLite.CFG in the same directory 
  1514.  where lxLite.EXE resides. You shouldn`t care about paths - lxLite will always 
  1515.  find it. For example, to use `max` configuration run lxLite /c:Max. For a 
  1516.  detailed description of .CFG file format see section right below the 
  1517.  following. 
  1518.  
  1519.  Here is a detailed explanation of what each switch does. Note that any switch 
  1520.  which accepts '+' or '-' sign after it (to enable/disable the action which 
  1521.  switch symbolizes) can be used without anything after it - this is accepted as 
  1522.  '+'. For example, /V+ is equivalent to /V. 
  1523.  
  1524.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  1525.  
  1526.  /A[{P|S|N{P|S}}{:#}] 
  1527.            Set alignment method for first and rest of objects. First object can 
  1528.            be aligned on [P]age shift, [S]ector or [N]o boundary. Note that the 
  1529.            last option (No boundary) cannot be achieved by using LINK386, but 
  1530.            it works well, and the LX format allows it. All objects except first 
  1531.            MUST be aligned on at least PageShift boundary. PageShift is a value 
  1532.            that is specified in LX header. You can redefine it too by 
  1533.            specifying a semicolon and a decimal value after it: for example the 
  1534.            /APP:512 switch will place all pages in executable on 512 bytes 
  1535.            boundary. Note that the # value must be a power of two (i.e. 
  1536.            1,2,4,8,16,32,...). 
  1537.  /B(D|X|+|-){:%} 
  1538.            Enable (+) or disable (-) copying original file into *.BAK; 
  1539.            optionaly lxLite can do it only when [D]ebug and/or e[X]tra data are 
  1540.            detected. Also you can specify an directory % for backed up files 
  1541.            (relative to root). The entire directory tree will be re-created 
  1542.            inside the backup directory. For example, the /BX:c:\lxlite.bak 
  1543.            switch will instruct lxLite to back up files only when e[X]tra data 
  1544.            is present in module and to place them into the directory structure 
  1545.            under the c:\lxlite.bak directory. 
  1546.  /C{S}{+|-} 
  1547.            Enable (+) or disable (-) colored output. You can specify {S} to 
  1548.            force lxLite to use StdOut instead of VioXXX functions. 
  1549.  /C[:%] 
  1550.            Use configuration with ID = %; The two predefined configuration 
  1551.            names are "default" and "unpack". First is always loaded as lxLite 
  1552.            starts and second is used when /X+ option is specified (this is NOT 
  1553.            equivalent to /c:Unpack). 
  1554.  / E{#} 
  1555.            Set [E]xclude filemask. All files that fits given filemask(s) will 
  1556.            be bypassed by lxLite. All filemasks must be separated by ':' 
  1557.            (because it cannot be a part of filemask). For example 
  1558.            /D*.zip:*.arj:*.rar switch will instruct lxLite to avoid all .zip, 
  1559.            .arj and .rar files. Default lxlite configuration (/C:default) 
  1560.            includes the /C:exclude configuration which instructs lxLite to 
  1561.            avoid all executables which are known to have problems when packed. 
  1562.            Note that the /D switches are additive, so /D*.zip /D*.arj /D*.rar 
  1563.            is equivalent to the example above. To clear exclusion list use 
  1564.            specify /D. 
  1565.  /F{+|-} 
  1566.            Force repacking. Use /F+ to bypass `already processed` message, i.e. 
  1567.            when lxLite thinks that file was already processed and it really 
  1568.            wasn`t. This usually doesn`t happen, but can happen when you try to 
  1569.            replace a stub by another of the same size in a already packed file. 
  1570.  /I{+|-} 
  1571.            Force (+) lxLite to run at idle priority. This mean that lxLite will 
  1572.            do its work only when no other activity in system occurs (waiting 
  1573.            for an keyboard/mouse event etc). This is the best in my opinion 
  1574.            choice because you can run lxLite in background and it will not 
  1575.            degrade almost at all system performance. However if you`ll run an 
  1576.            `badly-behaved` VDM session which grabs all CPU time lxLite will 
  1577.            completely stop. When run with /I- option lxLite does not changes 
  1578.            its priority (i.e. you can run lxLite /I- via priority.exe program 
  1579.            which starts programs with given priority). 
  1580.  /J[A|E|L|P|V](E|L|P|V|N|X|+|-) 
  1581.            Change module type: Leave [A]s-is, [E]xecutable module, [L]ibrary 
  1582.            module, [P]hysical or [V]irtual driver. Especially useful when 
  1583.            converting NE drivers. Optionaly you can restrict this to work only 
  1584.            on [E]xecutables, [L]ibraries, [P]hysical or [V]irtual drivers, [N]E 
  1585.            or L[X] executables and any combination of them. [N]E and [L]X 
  1586.            conditions are considered with an AND operator; all others with OR, 
  1587.            i.e. /JPELN will mean: "Change module type into [P]hysical device 
  1588.            driver for all [E]xecutables OR [L]ibraries which also are (AND) 
  1589.            [N]E modules" 
  1590.  /L(A|S|U|+|-){:%} 
  1591.            Instructs lxLite to maintain an log file. If no file name is 
  1592.            specified, lxLite.log is used in the home directory of lxLite. 
  1593.            Beside the filename, the start and final file size is written into 
  1594.            log along with the problems (if any) that were encountered when 
  1595.            processing (for example: 'Executable has been used by another 
  1596.            process and replaced'). You can also optionaly choose to log either 
  1597.            [S]uccessful or [U]nsuccessful cases or [A]ll (which means more than 
  1598.            just /SU+: lxLite will also log 'already processed' files). 
  1599.  /M[R[N|1|2|3]|L[N|1]|F[N|1|2]] 
  1600.            Set packing method & parameters. Second character (after M) defines 
  1601.            the method to set-up: `R` stands for run-length (/EXEPACK:1), 'L' 
  1602.            for Lempel-Ziv (/EXEPACK:2) and 'F' for Fixup packing method. The 
  1603.            third character is the level of compression using that method; if N 
  1604.            is specified the method is disabled. Three levels of packing are 
  1605.            provided for run-length compression. The level 1 is the fastest. It 
  1606.            searches only for 1-character strings. For example, the 'AAAAAAAA' 
  1607.            string will be detected and packed as 8, 1, 'A' while 'ABABABAB' 
  1608.            string will be stored as unpacked text. Level 2 detects repeated 
  1609.            strings of up to 16 characters length, so the example above will be 
  1610.            encoded as 4,2,'AB'. This is the default setting for most 'factory` 
  1611.            configurations. And last, 3rd level searchs for ALL strings of any 
  1612.            length (up to page size/2 = 2048). This compreses VERY slow and 
  1613.            seldom gives real results, so use it only when you really need it. 
  1614.            The Lempel-Ziv algorithm can be either disabled (/MLN) or enabled 
  1615.            (/ML1). When enabled it searchs for all matches using a relatively 
  1616.            fast hash-table, so there is no need in gradations by compression 
  1617.            speed. The fixup packing method can be set to [N]one, level 1 end 
  1618.            level 2; fixups packed using Level 1 are recognized by any OS/2 
  1619.            version above 2.x; however level 2 compressed fixups will work only 
  1620.            in OS/2 Warp 3.0 with (fixpack #17 (I believe)) and above (Warp 4.0 
  1621.            too). Note that when /MF1 or /MF2 is in use, the /U{+|-} option is 
  1622.            ignored - module is always unpacked first. 
  1623.  /N(B|L|A|+|-) 
  1624.            [N]E executables: convert into LX (+) or reject (-) modules that are 
  1625.            [B]ound, not [L]FN-aware or [A]ll. For more information about [B] 
  1626.            and [L] option see the 'Features' section above. For example, the 
  1627.            /NA- option will instruct lxLite not to convert NE files into LX, 
  1628.            the /NA+ will instruct to convert always; the /NA-LB+ will instruct 
  1629.            lxLite to convert ONLY non-[L]FN-aware and [B]ound executables, the 
  1630.            /NA+LB- will instruct lxLite to convert [A]ll except non-[L]FN-aware 
  1631.            and [B]ound executables. 
  1632.  /O(X|D|S|A|+|-){:%} 
  1633.            [O]utput e[X]tra/[D]ebug/[S]tub data into an external file; filename 
  1634.            is determined by applying mask % onto original filename. Data is 
  1635.            written [A]lways in the A+ state and only when removed in the A- 
  1636.            state. For example, the /OD:*.$d$ switch will have effect on the 
  1637.            TEST.EXE executable which contains debug info only when you choose 
  1638.            to discard it and will place it into the file TEST.$d$. 
  1639.  /P{+|-} 
  1640.            Enable (+) or disable (-) pause before each file. The program shows 
  1641.            the name of file which will be processed and offers a choice to 
  1642.            continue or to abort. 
  1643.  /Q{+|-} 
  1644.            Query all configuration options. Basically it simply types a colored 
  1645.            version of lxLite.cfg file through a MORE-style filter :-) All other 
  1646.            options on the command line (if any) are ignored. 
  1647.  /R{+|-} 
  1648.            Enable (+) or disable (-) [R]ecursive file search through 
  1649.            subdirectories. 
  1650.  /S{+|-} 
  1651.            Show (+) or don`t show (-) configuration in effect. This is useful 
  1652.            for examining which settings are stored into .CFG file, especially 
  1653.            for linked configurations (see below). For example lxLite /Cdefault 
  1654.            /S will show the default settings. 
  1655.  /T{:%} 
  1656.            Use specified file as new DOS stub. DOS stub is (usualy) a tiny DOS 
  1657.            .EXE file linked to OS/2`s module which is typicaly used to type an 
  1658.            error message in the case if the executable is not run from DOS 
  1659.            command line. Usually this looks like: 
  1660.  
  1661.            This is an OS/2 executable module 
  1662.  
  1663.            Along with lxLite are enclosed two stubs: stub_min.bin and 
  1664.            stub_vdm.bin. First is the standard `type-error-and-exit` type, but 
  1665.            it is slightly smaller than usual stubs used by various linkers. The 
  1666.            second is an stub which starts a new OS/2 session and runs program 
  1667.            from it again. If OS/2 is not detected it types the same error 
  1668.            message and exits. The default for stub_vdm.bin is to let OS/2 
  1669.            decide the type of your executable itself. Alternatively, you can 
  1670.            specify the type of session to be started by stub_vdm.bin. For this 
  1671.            you need any hex editor - find the pattern `SesType->' in stub and 
  1672.            replace the byte that comes after arrow (->) by needed session type. 
  1673.            OS/2 recognizes next session types: 
  1674.                00 - OS/2 session manager determines type (default) 
  1675.                01 - OS/2 full-screen session 
  1676.                02 - OS/2 windowed session 
  1677.                03 - PM application 
  1678.                04 - VDM full-screen session 
  1679.                07 - VDM windowed session 
  1680.  
  1681.            You can use stubs to do some neat tricks. Say you have two 
  1682.            executables: ZIP for OS/2 and ZIP for DOS (I mean GNU ZIP, not 
  1683.            PKZIP). They offer the same interface, does the same thing and share 
  1684.            the same name. To avoid conflicts (and avoid placing them in 
  1685.            different directories) you can link them both together into one EXE 
  1686.            file which can be ran either from DOS or OS/2 mode. This can be 
  1687.            achieved by following command line:  lxLite /t:dos\zip.exe 
  1688.            os2\zip.exe 
  1689.  
  1690.            If stub size is bigger than certain threshold size (default - 1024 
  1691.            bytes) it will not be replaced. This is done since stubs of bigger 
  1692.            size usualy does something useful (for example, this can be already 
  1693.            an 'dual-mode' executable). It is useful for batch conversions and 
  1694.            not too useful when you do tricks like described above: so you can 
  1695.            wish to change this threshold value to zero. This can be achieved 
  1696.            using the /Z switch (see below for details). 
  1697.  /U{+|-} 
  1698.            Enable (+) or disable (-) unpacking file before packing. lxLite know 
  1699.            how to unpack any of two packing methods described, so default 
  1700.            option state is enabled. Disable it only when compression time 
  1701.            savings are more important than disk space savings. This option is 
  1702.            ignored (and file is anyway unpacked) when /MF2 packing is enabled. 
  1703.  /V[{0123OCRNMPEF}{+|-}] 
  1704.            [V]erbose (show a lot of file information). 
  1705.            This is a switch for curious ones :-) It has different levels of 
  1706.            verbosity, you can choose which kind of information to include in 
  1707.            overall output. For example: /V0-12+3-O+. Here is an detailed 
  1708.            description of what each key shows: 
  1709.                0 
  1710.                 Show basical information about executable: 
  1711.                   -  module type 
  1712.                   -  required CPU 
  1713.                   -  module version 
  1714.                   -  page size (on Intel platform always 4096 :-) 
  1715.                   -  page shift 
  1716.                   -  object count 
  1717.                   -  resource count 
  1718.                   -  imported entries count 
  1719.                   -  debug info size 
  1720.                   -  start object and EIP 
  1721.                   -  stack object and ESP 
  1722.                   -  module name 
  1723.                   -  module description 
  1724.                1 
  1725.                   -  OS required to run the executable (always OS/2 :-) 
  1726.                   -  Number of pages present in file 
  1727.                   -  Fixup table overall size 
  1728.                   -  Fixup table overall CRC 
  1729.                   -  Resident portion of header size 
  1730.                   -  Resident portion of header CRC 
  1731.                   -  Automatical data object (valid only for 16-bit 
  1732.                      executables) 
  1733.                   -  Number of preloaded pages 
  1734.                   -  Additional stack size (has no effect in LX files) 
  1735.                   -  Heap size (extra auto-data-object size; has no effect in 
  1736.                      LX files) 
  1737.                2 
  1738.                   -  Uncompressed Page data offset (relative to LX header) 
  1739.                   -  Compressed data offset (relative to LX header) 
  1740.                   -  Page fixup table offset (relative to LX header) 
  1741.                   -  Fixup table offset (relative to LX header) 
  1742.                   -  Imported modules table offset (relative to LX header) 
  1743.                   -  Debug Info data offset (absolute) 
  1744.                3 
  1745.                   -  Object Table offset (relative to LX header) 
  1746.                   -  Resource Table offset (relative to LX header) 
  1747.                   -  Object Page Map Table offset (relative to LX header) 
  1748.                   -  Module Directives Table offset (relative to LX header) 
  1749.                   -  Non-resident name table offset (relative to LX header) 
  1750.                   -  Non-resident name table size 
  1751.                   -  Imported procedures table offset (relative to LX header) 
  1752.                   -  Entry points table offset (relative to LX header) 
  1753.                O 
  1754.                 Show object info (i.e. information about objects contained in 
  1755.                 file). Output looks as follows: 
  1756.  
  1757.                                 ## - Base --- Size --R-W-E-Res-Dis-Shr-Pre-Inv-Swp-Rsd-Loc-A16-32B-Cnf-IOP-
  1758.                                 1 00010000 00001000 Y Y Y  Y   Y   Y   Y   Y   Y   Y   Y   Y   Y   Y   Y
  1759.  
  1760.                 ## 
  1761.                                Object`s ordinal number 
  1762.                 Base 
  1763.                                Object`s base address, i.e. linear address at 
  1764.                                which it can be placed without applying 
  1765.                                self-addressing fixups 
  1766.                 Size 
  1767.                                Size of the object  Further follows object`s 
  1768.                 flags which describe different attributes of object: 
  1769.                   -  R - Object is readable 
  1770.                   -  W - Object is writable 
  1771.                   -  E - Object is executable 
  1772.                   -  Res - Object is resource 
  1773.                   -  Dis - Object is discardable 
  1774.                   -  Shr - Object is shared among instances (DLLs only) 
  1775.                   -  Pre - Object must be preloaded (this doesn`t work as far 
  1776.                      as I know) 
  1777.                   -  Inv - Object is invalid 
  1778.                   -  Swp - Object is swappable 
  1779.                   -  Rsd - Object is resident (for ring 0 drivers only, AFAIK) 
  1780.                   -  Loc - Object can be long-term locked (drivers only) 
  1781.                   -  A16 - Alias16, object has an alias in 16:16 format 
  1782.                   -  32B - Object is 32-bit 
  1783.                   -  Cnf - Object is code-conforming (16-bit drivers only, 
  1784.                      never seen it) 
  1785.                   -  IOP - I/O priviledge. Object is authorised to access I/O 
  1786.                      ports. 
  1787.                C 
  1788.                 Object [C]ontents: show pages which makes object. This key 
  1789.                 enforces /VO. Output looks something like: 
  1790.  
  1791.                                 ++- Index --+ FileOffs + Size + Attribute +
  1792.                                 + 00000001 + 00012340 + 0123 + LZ-packed +
  1793.  
  1794.                 Index 
  1795.                                Page number in executable (absolute, not 
  1796.                                relative) 
  1797.                 FileOffs 
  1798.                                Offset of page data in file (absolute) 
  1799.                 Size 
  1800.                                Size of page data in file 
  1801.                 Attribute 
  1802.                                Page attribute: 
  1803.                 Valid 
  1804.                                An valid unpacked page 
  1805.                 RL-packed 
  1806.                                Compressed using Run-Length encoding (EXEPACK) 
  1807.                 Invalid 
  1808.                                Page is invalid 
  1809.                 Zeroed 
  1810.                                Page must be zeroed 
  1811.                 Range 
  1812.                                ???, no info, never seen one 
  1813.                 LZ-packed 
  1814.                                Compressed using Lempel-Ziv encoding (EXEPACK2) 
  1815.                R 
  1816.                 [R]esident Names Table: This is an table which usually contains 
  1817.                 all exported by name procedures. First entry always contains 
  1818.                 module name. Display format: 
  1819.  
  1820.                                 + Indx + Name ----------------------------------------------
  1821.                                 | 0000 | TCPIPDLL
  1822.                                 | 0001 | _dn_skipname
  1823.                                 | 0002 | _res_query
  1824.                                 | 0003 | _writev
  1825.                                 [.....................]
  1826.                                 + 006F + _gethostent
  1827.  
  1828.                 Indx 
  1829.                                This is the index into the Module Entry Table 
  1830.                                which describes the actual address of routine 
  1831.                 Name 
  1832.                                The name of routine as it is imported into other 
  1833.                                programs. 
  1834.                N 
  1835.                 [N]on-Resident Name Table: This is an table which contains 
  1836.                 miscelaneous entry points which are not exported. First entry 
  1837.                 contains module description (if defined). Display format is the 
  1838.                 same as above. 
  1839.                M 
  1840.                 Imported [M]odule Names Table: This table contains names of all 
  1841.                 external dynamic-link libraries which uses current module. 
  1842.                 Display format: 
  1843.  
  1844.                                 + Indx + Offs + Name ---------------------------------------
  1845.                                 | 0001 | 0000 | SO32DLL
  1846.                                 | 0002 | 0008 | TCP32DLL
  1847.                                 | 0003 | 0011 | so32dll
  1848.                                 | 0004 | 0019 | tcp32dll
  1849.                                 | 0005 | 0022 | DOSCALLS
  1850.                                 | 0006 | 002B | NLS
  1851.                                 | 0007 | 002F | MSG
  1852.                                 + 0008 + 0033 + setloc1
  1853.  
  1854.                 Indx 
  1855.                                Index into the module names table; This is often 
  1856.                                used in fixup records although lxLite resolve 
  1857.                                such references automatically and shows directly 
  1858.                                entry name. 
  1859.                 Offs 
  1860.                                Offset in the table = sum of lengths of all 
  1861.                                previous names. This is not used for Module 
  1862.                                Names Table but is used for Procedure Names 
  1863.                                Table which is displayed in similar format. 
  1864.                 Name 
  1865.                                The name of entry. 
  1866.                P 
  1867.                 Imported [P]rocedure Names Table: This table contains names of 
  1868.                 all external procedures which are imported by name. Display 
  1869.                 format is similar to Module Names Table. 
  1870.                E 
  1871.                 Module Entry Table: This is an table which defines some entry 
  1872.                 points into the current module; not neccessarily all entry 
  1873.                 points are defined here: only those which are exported MUST be 
  1874.                 defined here. Here is an sample display: 
  1875.  
  1876.                                 + Indx + Entry Type + Entry Attributes ---------------------
  1877.                                 | 0005 |    0:32    | 1:00000000, Exported, Shared Data
  1878.                                 | 000B |    0:32    | 1:00008C90, Exported, Shared Data
  1879.                                 | 000C |    0:32    | 1:00008FB4, Exported, Shared Data
  1880.                                 | 002B |    16:16   | 4:02EC, Exported, Shared Data
  1881.                                 | 002E |    0:32    | 1:00009468, Exported, Shared Data
  1882.                                 + 0056 +    0:32    + 1:00001448, Exported, Shared Data
  1883.  
  1884.                 Indx 
  1885.                                Index into the entry table. Entry table is 
  1886.                                always sequential, and all 'holes' between 
  1887.                                indices are filled with 'unused' entry points 
  1888.                                (for example, entry point index 10 cannot follow 
  1889.                                index 5: there must be entries 6,7,8,9 between 
  1890.                                them marked as 'unused'). lxLite doesn`t show 
  1891.                                'unused' entries since this is unuseful; however 
  1892.                                they are there, just for your information. 
  1893.                 Entry Type 
  1894.                                Type of entry point. Entry points can be located 
  1895.                                in different segments (16-bit, 32-bit, it can be 
  1896.                                an Call Gate etc), so OS/2 needs a flag which 
  1897.                                will describe how to handle each entry point. 
  1898.                                There are also "forwarders" - fake entry points 
  1899.                                into the module which are in fact redirected 
  1900.                                into another module. For example, PMWIN.DLL, 
  1901.                                PMGPI.DLL and many other DLLs are simply a bunch 
  1902.                                of forwarders which all points to PMMERGE.DLL. 
  1903.                 Entry Attributes 
  1904.                                These depends of the entry type. For example, 
  1905.                                0:32 entries has Object:Offset32 attribute, 
  1906.                                16:16 entries have Object:Offset16 attribute, 
  1907.                                forwarders have attributes which describe to 
  1908.                                which module and which procedure to redirect 
  1909.                                this entry etc. 
  1910.                F 
  1911.                 [F]ixup table. This is useful, I think, only for me and, may 
  1912.                 be, for those who write compilers :-) Display format: 
  1913.  
  1914.                                 + Object index: 1 Page index: 1 Absolute page: 1
  1915.                                 | 32-bit relative offset of import SETLOC1.4
  1916.                                 | 045C 0494 04B8
  1917.                                 | 32-bit relative offset of import SETLOC1.5
  1918.                                 | 035F 0CBA
  1919.                                 [.....................]
  1920.                                 + Object index: 1 Page index: 2 Absolute page: 2
  1921.                                 | 32-bit relative offset of import SETLOC1.4
  1922.                                 | 02B6 0328 0354 090E
  1923.                                 [.....................]
  1924.                                 + Object index: 1 Page index: 42 Absolute page: 42
  1925.                                 | 32-bit relative offset of import DOSCALLS.256(DosSetFilePtr)
  1926.                                 | 066F 0C5D 0CD5
  1927.                                 | 32-bit relative offset of import DOSCALLS.272(DosSetFileSize)
  1928.                                 | 0CB2
  1929.                                 | 32-bit relative offset of import DOSCALLS.273(DosOpen)
  1930.                                 | 0B9D
  1931.                                 [.....................]
  1932.                 Imports by ordinals are handled in a special way: lxLite has a 
  1933.                 resource table which contains information which allows lxLite 
  1934.                 to transform MODULE:ORDINAL form into an MODULE:NAME pair. By 
  1935.                 default lxLite contains a list of ordinals for all base OS/2 
  1936.                 DLL`s, but if you want to add your own or if you need something 
  1937.                 special, you can add your module entries to lxLite.rc file in 
  1938.                 the API subdirectory and then to re-attach resources to lxLite 
  1939.                 (using Resource Compiler). 
  1940.  /W(W|S|+|-) 
  1941.            [W]rite (+) or [S]imulate writing of resulting file. In the /WW- 
  1942.            state lxLite will do nothing (useful for /V option); in the /WS+ 
  1943.            state lxLite will even display compression ratio, but won`t alter 
  1944.            the module file on disk. Useful for /V{...} switch, but also can be 
  1945.            useful for debugging your options. 
  1946.  /X{+|-} 
  1947.            e[X]pand (+) or pack (-) given files. Use this switch to decompress 
  1948.            files. lxLite can decompress files which has been compressed by 
  1949.            itself as well as by other programs which uses standard methods 
  1950.            (i.e. Resource Compiler, LINK386, REPACK). It is NOT identical to 
  1951.            /c:Unpack option. 
  1952.  /Y[U|X|B|C|D]{?} 
  1953.            auto-repl[Y] '?' on one of questions: 
  1954.                file in [U]se /Answer: [R]eplace, [S]kip, [A]bort/ 
  1955.                [D]ebug info in file /Answer: [D]iscard, [L]eave, [S]kip, 
  1956.                 [A]bort/ 
  1957.                e[X]tra data in file /[D]iscard, [L]eave, [S]kip, [A]bort/ 
  1958.                [B]ackup file exists /[O]verwrite, [N]o backup, [S]kip, 
  1959.                 [A]bort/ 
  1960.                [C]onfirmation on /P+ /[P]rocess, [S]kip, [A]bort/  If reply 
  1961.            (?) is missing, lxLite will ask you interactively each time. When 
  1962.            lxLite asks you a question, you can press Alt+letter which will set 
  1963.            the default answer for all following similar questions. 
  1964.  /Z{:#} 
  1965.            This option will set the `threshold` for lxLite to help him 
  1966.            determine when stub is a `dummy` one and when it is a functional 
  1967.            program. There are a number of programs (for example, 
  1968.            \os2\xdfloppy.exe) which runs both under DOS and OS/2 - in such 
  1969.            programs DOS executable is implemented into OS/2`s LX as a DOS stub. 
  1970.            By default lxLite considers all stubs bigger than 1024 bytes as 
  1971.            functional programs, and therefore for such executables the /T{:#} 
  1972.            option has no effect. If you want stub to be always replaced, use 
  1973.            the /Z option. If you want to disable the /T option, use /Z-1. 
  1974.  /?,/H 
  1975.            Show a brief help. This is useful when you forget a particular 
  1976.            switch from all that list :-) 
  1977.  
  1978.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  1979.  
  1980.  Title page | Introduction | Features | Configuration file | Error messages | 
  1981.  Bugs and limitations | Thanks... | Utility Pack | Author info 
  1982.  
  1983.  
  1984. ΓòÉΓòÉΓòÉ 1.11. Thanks ΓòÉΓòÉΓòÉ
  1985.  
  1986.  
  1987.  
  1988. Thanks to: 
  1989.  
  1990.  
  1991.  
  1992. Dmitry Goldobin 
  1993.  
  1994. who digged from OS2LDR information regarding /EXEPACK:2 packing method; the 
  1995. idea about lxLite was born when I was looking this; 
  1996.  
  1997. Rinat Sadretinow 
  1998.  
  1999. who gave me some ideas and informed me about some enhacements in OS/2 v4.0 
  2000. regarding LX modules; 
  2001.  
  2002. Ilfak Guilfanov 
  2003.  
  2004. who gave me the information about new type of chained fixups in LX modules 
  2005. which appeared in OS/2 v4.0. 
  2006.  
  2007. I also would thank 
  2008.  
  2009. Herwig Bauernfeind 
  2010.  
  2011.  who contributed to German translation of the documentation; Alas the link 
  2012. between us is very slow, so German docs are almost always little out of date 
  2013. :-) Sorry, I cannot do nothing with it. Here is a paragraph written completely 
  2014. by Herwig: 
  2015.  
  2016. Translator 
  2017.  
  2018. As I really was very happy about Andys program, I asked whether he would like a 
  2019. German translation of the documentation of version 1.01. Well, some things 
  2020. sound a bit 'bumpy', but first of all, I am doing this as a hobby only, 
  2021. secondly I am not professional programmer. I hope, it will help anyway. 
  2022.  
  2023. You can reach me by email (although this is quite useless, as I contributed the 
  2024. translation only): 
  2025.  
  2026. FIDOnet: Herwig Bauernfeind, 2:312/5.35 
  2027. InterNet: H_BFD@fidonet.at (does not work reliably by now) 
  2028.  
  2029. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  2030.  
  2031. Title page | Introduction | Features | Command-line switches | Configuration 
  2032. file | Error messages | Bugs and limitations | Utility Pack | Author info 
  2033.  
  2034.  
  2035. ΓòÉΓòÉΓòÉ 1.12. lxLite utility pack ΓòÉΓòÉΓòÉ
  2036.  
  2037.  
  2038.  
  2039. Abstract 
  2040.  
  2041. Some time after releasing version 1.01 of lxLite (i.e. 1.0.1) (and some time 
  2042. before :-) I wrote some simple command-line utilites which greatly simplified 
  2043. my life. Because apart from lxLite they don`t present nothing interesting, I 
  2044. included them here for you to get them along with lxlite :-) 
  2045.  
  2046. unLock 
  2047.  
  2048. unLock is a simple utility which allows to `unlock` application executables 
  2049. which is currently in use. Normally when an executable is loaded by OS/2 its 
  2050. file is open with a deny-write sharing mode. This is done because LX format 
  2051. structure is designed not to swap out unused pages in executables each time 
  2052. when they aren`t needed anymore, but rather to discard them. When discarded 
  2053. page is needed OS/2 simply reads it again from executable. 
  2054.  
  2055. However, there is still a way to replace executables `on-the-fly` even if they 
  2056. are currently running. There is an so-called `well-known undocumented` function 
  2057. (which in fact means that it won`t be neccesarily supported in future versions 
  2058. of OS/2) which allow to disable sharing protection on such files. Before doing 
  2059. that OS/2 reads entire executable in swap file, then page swapping is done as 
  2060. with usual memory. If you`ll `unlock` many running executables at the same time 
  2061. you can notice an increase in swap file size. So, this is just an temporary 
  2062. work-around, you have better to reboot after doing all neccesary things on 
  2063. former locked files. 
  2064.  
  2065. The command-line format of unLock is much like lxLite`s, except that it have 
  2066. much less options :-) 
  2067.  
  2068.  /R{+|-} 
  2069.            [R]ecursive (+) file search through subdirectories. unLock will 
  2070.            recursively search any directories which is located below the 
  2071.            directory of given filemask. If multiple masks are given multiple 
  2072.            recursive searchs will be performed. 
  2073.  /P{+|-} 
  2074.            Enable (+) or disable (-) pause before each file. Before each file 
  2075.            unLock will ask you whenever you really want to unlock the file. 
  2076.  /V{+|-} 
  2077.            Verbose (show additional information). If verbose option is disabled 
  2078.            (/V-) only those messages are left on screen which displays critical 
  2079.            messages (i.e. errors), otherwise after each filename unLock shows 
  2080.            the result of unlock operation - 'unlocked' or 'sharing violation'. 
  2081.            Note that unLock CANNOT unlock files which are locked in some other 
  2082.            way than executbles. 
  2083.  /?,/H 
  2084.            Show a short help screen 
  2085.  
  2086.  
  2087.  noEA 
  2088.  
  2089.  As you probably know :-) many (in fact a lot) of files have EAs (extended 
  2090.  attributes), but does not need them. In fact the only thing which REALLY needs 
  2091.  extended attributes is your Desktop\ directory. All other files can or can not 
  2092.  have extended attributes - the only thing that you can lose by removing those 
  2093.  attributes is how that file will appear in WPS folder (size and icon). Other 
  2094.  type of extended attributes is those used by REXX - any REXX program that you 
  2095.  run at least once and which does not have ReadOnly attribute set have some K 
  2096.  of extended attributes attached to it. This is the 'pre-compiled' text of the 
  2097.  REXX program, so it will run faster with that attributes. However, if you 
  2098.  don`t use the REXX script too often, you can remove extended attributes from 
  2099.  file then to set the Read-Only attribute. 
  2100.  
  2101.  Note that if you have not too many EAs (say the .TYPE and the .APPTYPE EAs) 
  2102.  they will NOT occupy any disk space because of the wise HPFS structure. So to 
  2103.  use noEA you MUST know what you`re doing and whenever you needs it (anyway, 
  2104.  this is true for any other program :-). 
  2105.  
  2106.  noEA can show a list of extended attribute names for the processed files or 
  2107.  remove all of them. The command-line switches are much like in all other 
  2108.  utilites: 
  2109.  
  2110.  /R{+|-} 
  2111.            [R]ecursive (+) file search through subdirectories. noEA will 
  2112.            recursively search any directories which is located below the 
  2113.            directory of given filemask. If multiple masks are given multiple 
  2114.            recursive searchs will be performed. 
  2115.  /P{+|-} 
  2116.            Enable (+) or disable (-) pause before each file. noEA will ask for 
  2117.            confirmation before each processed file. 
  2118.  /V{+|-} 
  2119.            Verbose (show EAs instead of removing them). When this switch is 
  2120.            used noEA will display the EAs attached to processed file and will 
  2121.            NOT remove them. 
  2122.  /Y{+|-} 
  2123.            Assume (+) on all queries affirmative responce. When noEA encounters 
  2124.            an write-locked file it warns you about this. However, this can be 
  2125.            annoying when doing automatical processing (i.e. calling noEA from 
  2126.            batch files). You can force noEA to process any files it can by 
  2127.            specifying this switch. 
  2128.  /?,/H 
  2129.            Show a short help screen 
  2130.  
  2131.  
  2132.  chCase 
  2133.  
  2134.  Some time ago I was finally bored of the annoying habbit of some programs to 
  2135.  write their files in upper case. And not only contents (almost any program 
  2136.  which changes config.sys tends to convert it all to upper case when I like it 
  2137.  to be in lower case) but filenames also. So i started this little project as a 
  2138.  problem-dedicated-and-easy-to-use replacement for REN command. 
  2139.  
  2140.  The main ideology of chCase is to divide filename in some `parts` then to 
  2141.  perform some case-conversions on each part apart :-) You can define `part 
  2142.  separator` characters using /S"" option. By default chCase uses "." as `part 
  2143.  separator`. I.e. filename chcase.is.a.great.prog will be divided into parts 
  2144.  'chcase', 'is', 'a', 'great' and 'prog'. Further you can tell chCase to 
  2145.  convert first part to upper-case, second - to lower-case, third - to mixed 
  2146.  format (i.e. first letter in uppercase and rest in lowercase) and so on. 
  2147.  
  2148.  The available options are: 
  2149.  
  2150.  /C{F|D}(L|U|M|A) 
  2151.            Convert to [L]ower/[U]pper/[M]ixed/[A]s-is case. You can define 
  2152.            multiple `case conversion actions` - first one will be applied on 
  2153.            the first `part`; second - on the second `part` and so on. Last 
  2154.            `action` will be used for any extra encountered `parts`, so if 
  2155.            you`ll define only one option it will be applyed on all filename 
  2156.            parts. Some examples: 
  2157.  
  2158.                       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2159.                       Γöéfilename                 Γöécommand line             Γöéresulting filename       Γöé
  2160.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2161.                       ΓöémY.Very.lOnG.fIlE.NamE   Γöé/culam my*               ΓöéMY.very.lOnG.File.Name   Γöé
  2162.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2163.                       Γöéjust.an.example          Γöé/cml jus*                ΓöéJust.an.example          Γöé
  2164.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2165.                       ΓöéleT.iT.bE                Γöé/cmla let*               ΓöéLet.it.bE                Γöé
  2166.                       ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2167.  
  2168.  /R{+|-} 
  2169.            [R]ecursive (+) file search through subdirectories. chCase will 
  2170.            recursively search any directories which are located below the 
  2171.            directory of given filemask. If multiple masks are given multiple 
  2172.            recursive searchs will be performed. 
  2173.  /P{+|-} 
  2174.            Enable (+) or disable (-) pause before each file. Before each file 
  2175.            chCase will ask you whenever you really want to rename this file. 
  2176.            The initial and final filenames are displayed. 
  2177.  /S{%} 
  2178.            Define separator character(s). You can use this switch in the case 
  2179.            when you have some files which uses some other separators, for 
  2180.            example space or underscore. Note that the /S switch is NOT additive 
  2181.            i.e. any /S switch disables the action of precedent. Even "." is 
  2182.            cleared by /S switch, so if you for example want to use as 
  2183.            separators both "." and space " " you have to define them both in a 
  2184.            single /S switch as follows: /S" ." 
  2185.  
  2186.            Just some examples: 
  2187.  
  2188.                       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2189.                       Γöéfilename                 Γöécommand line             Γöéresulting filename       Γöé
  2190.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2191.                       ΓöéMary has a Little.Lamb   Γöé/cm /s" ." mar*          ΓöéMary Has A Little.Lamb   Γöé
  2192.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2193.                       Γöéjohn_wAs_a_lItTle_lame   Γöé/cuml /s"_"              ΓöéJOHN_Was_a_little_lame   Γöé
  2194.                       ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2195.  
  2196.  /V{+|-} 
  2197.            Verbose (show additional information). If you will specify /V- 
  2198.            chcase will leave on screen only critical messages such as errors - 
  2199.            all others will be cleared immediately after they succeeded. 
  2200.  /?,/H 
  2201.            Show a short help screen 
  2202.  
  2203.  
  2204.  SysIcons 
  2205.  
  2206.  This program can change system pointers. It is mainly an GUI interface to 
  2207.  WinSetSystemPointer() function, so don`t expect too much :-) Anyway, it has 
  2208.  some advanced features such as editing pointers (using OS/2 Icon Editor) and 
  2209.  also allows you to choose the method for storing pointers - you can either 
  2210.  store into INI file an reference to an external file (so you must not move or 
  2211.  delete them) or to store the pointer image directly (so it will occupy space 
  2212.  in INI file, but original files on disk can be deleted after this). 
  2213.  
  2214.  The interface is quite simple; I`ll describe here only some features that you 
  2215.  may not understand. 
  2216.  
  2217.  The Icon Filename field displays the full name of pointer file which OS/2 uses 
  2218.  at start-up to load currently selected system pointer. If pointer is stored 
  2219.  directly into OS2.INI file it will say so. 
  2220.  
  2221.  The "Store icon directly/Use file reference" field lets you choose the method 
  2222.  which SysIcons will use to store icon reference into INI file. This will work 
  2223.  only for those icons which you have changed AFTER setting this button. If 
  2224.  "Store icon directly" button is active, you can load icons and then remove 
  2225.  them - they will not be used by OS/2 at start-up. 
  2226.  
  2227.  The "Change" button displays the standard file dialog and lets you choose 
  2228.  another icon instead of highlighted. 
  2229.  
  2230.  The "Load Set" button lets you load an entire pointer set instead of loading 
  2231.  each file separately. Note that sysIcons use an different from "System 
  2232.  Setup->Mouse->Pointers->Load set" method: it uses an plain text file with 
  2233.  extension .SET which defines one or more pointer replacements; OS/2`s setup 
  2234.  uses hard-coded filenames (i.e. ARROW.PTR will always be the default mouse 
  2235.  pointer). The format of .SET file is as follows: 
  2236.  
  2237.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  2238.  
  2239.   ; Everything after an semicolon is ignored
  2240.   ; Use semicolons to include comments into .SET file
  2241.   ARROW           arrow.ptr       ; This statement defines the file
  2242.                                   ; containing the default mouse pointer
  2243.   TEXT            text.ptr        ; -//- the text-editing pointer
  2244.   WAIT            wait.ptr        ; -//- the WAIT mouse pointer
  2245.   SIZE                            ; Empty lines resets pointer to default value
  2246.                                   ; The SIZE pointer is valid only in OS/2 v2.x
  2247.   MOVE            move.ptr        ; This is mouse pointer when moving a window
  2248.   SIZENESW        sizenesw.ptr    ; arrow from North-East to South-West
  2249.   SIZENWSE        sizenwse.ptr    ; North-West to South-East
  2250.   SIZEWE          sizewe.ptr      ; West to East
  2251.   SIZENS          sizens.ptr      ; North to South
  2252.   APPLICATION     applicat.ptr    ; Default icon representing an application
  2253.   INFORMATION     info.ptr        ; The icon displayed in Information messages
  2254.   QUESTION        question.ptr    ; The icon displayed in Question messages
  2255.   ERROR           error.ptr       ; The icon displayed in Error messages
  2256.   WARNING         warning.ptr     ; The icon displayed in Warning messages
  2257.   ILLEGAL         illegal.ptr     ; The Illegal Action mouse pointer
  2258.   DEFFILE         file.ptr        ; The default icon representing a file (?)
  2259.   DEFFOLDER       folder.ptr      ; The default icon representing a folder (?)
  2260.   MULTFILE        multfile.ptr    ; Multiple-file selection icon (?)
  2261.   DEFPROGRAM      program.ptr     ; The default icon representing a program
  2262.  
  2263.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  2264.  
  2265.  Along with SysIcons I supplied three sets of system pointers: two of my own 
  2266.  design (although some of them I collected from miscelaneous sources) and one 
  2267.  of an unknown author (sorry) but that I like most. Hope you like them :-) 
  2268.  
  2269.  The "Edit" button stores pointer into a temporary file (if it is not a file 
  2270.  reference) and launches Icon Editor. After Icon Editor ends the file is loaded 
  2271.  back into INI file. 
  2272.  
  2273.  The "Undo" button does what you expect :-) But if you moved the highlight bar 
  2274.  after change, you cannot undo the change anymore. 
  2275.  
  2276.  The "Default" button does what you expect: it changes pointer to its default 
  2277.  shape. 
  2278.  
  2279.  The "Quit" button is the coolest feature of my program: hope you like it :-) 
  2280.  
  2281.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  2282.  
  2283.  Title page | Introduction | Features | Command-line switches | Configuration 
  2284.  file | Error messages | Bugs and limitations | Thanks... | Author info 
  2285.  
  2286.  
  2287. ΓòÉΓòÉΓòÉ 1.13. whatsnew.txt ΓòÉΓòÉΓòÉ
  2288.  
  2289.               -------------------------
  2290.               lxLite revision history
  2291.              -------------------------
  2292.  
  2293.  [;] Comment
  2294.  [*] Modified
  2295.  [+] Added feature
  2296.  [-] Removed feature
  2297.  [!] Bug fix
  2298.  
  2299.  1.2.1
  2300.  ----- 17-Aug-97 small bugfix
  2301.  [!]  Improved handling of filenames with forward slashes instead of
  2302.     backslashes
  2303.  [!]  (yet again :-() changed the 'already packed' detection algorithm.
  2304.     The problem with it is that lxLite does not put any kind of
  2305.     'fingerprint' into processed files so I have to decide whenever
  2306.     it has been processed or not only by side effects.
  2307.  [*]  Made noEA's output a bit quieter. Now without /V option noEA
  2308.     shows all file names in one line and with /V option noEA advances
  2309.     to next line only for those files that has EAs.
  2310.  [!]  chCase is back now! I understood why chCase messed up filenames
  2311.     when codepage was 437 :-( Sorry to those who had to reformat
  2312.     their HD to get rid of messy filenames ;-( it is mostly IBM`s
  2313.     fault, not mine. This sometimes breaks HPFS's filename BSP tree
  2314.     and makes files totally unreachable, undeletable etc.
  2315.  
  2316.  1.2.0
  2317.  ----- 10-Jul-97
  2318.  [!!!] Mega-bug fix :-) I caught a very serious error in lxLite. However,
  2319.     I`ve encountered it only on GNU C++ compiler executable when I
  2320.     tried to pack it using RLE (/c:ver2x) method, so it is not too
  2321.     probable that you seen it before :-) The problem was following:
  2322.     for some unknown reason the guys at IBM decided that whenever a
  2323.     packed page is bigger than 0xFFC bytes, it is an error. To understand
  2324.     this, I had to dig through the OS/2 kernel (whew!). So if the
  2325.     compression ratio for some page was really worse (this happens much
  2326.     seldom on EXEPACK2 (LZ) method since it packs better, and often on
  2327.     RLE method since it sucks), the page was simply missing at its
  2328.     memory location (!). In such cases a record is added to POPUPLOG.OS2,
  2329.     looking very unusual (no registers, no location etc).
  2330.  [!]  noEA will not bomb out anymore when it tries to process a completely
  2331.     locked file (i.e. ea data. sf).
  2332.  [*]  In some situations (very high ordinals in entry table) lxLite began
  2333.     to eat lots of memory, and this usually terminated with an
  2334.     out-of-swap-space trap :-( Fixed.
  2335.  
  2336.  1.1.9
  2337.  ----- 10-May-97 Upgrade for version 1.1.8
  2338.  [*]  lxLite is distributed now under GNU General Public License (GPL).
  2339.  [*]  lxLite`s documentation is now in both .HTML and .INF format
  2340.     (the .INF book is converted for your convenience with HTML2IPF).
  2341.  [!]  Oooooops! I`ve left a debug sequence in fixup packing section,
  2342.     so really fixups were packed ONLY at page N20! :-)
  2343.  [*]  Added a little tolerance to minor (and even severe) bugs in fixip
  2344.     table which could lead lxLite to display an 'invalid fixup record'
  2345.     message.
  2346.  [*]  More tolerance to incorrect debug information (exceeds executable,
  2347.     encountered on FASTECHO/2 1.46).
  2348.  [!]  Yet again improved 'already-packed' modules detection :-)
  2349.  [+]  Added the /C{+|-} option for those with a B/W monitors
  2350.  [+]  Added the /CS{+|-} option for those who prefer writing to stdout.
  2351.     Actually lxLite isn`t entirely an stdOut program, it still uses VioXXX
  2352.     to do some things, notably get console width and height. You can put
  2353.     this option in the [default] section of config file to force lxLite
  2354.     always write to stdout.
  2355.  [+]  Disabled the progress bar indicator when StdOut is redirected. Now
  2356.     you can use lxLite >alternateLogFile without getting much garbage.
  2357.     Try lxLite * | more :-)
  2358.  [!]  Captain Nemo`s INI file (NEMO-OS2.INI) has a perfect NE executable
  2359.     structure :-))) so I added NEMO-OS2.INI to the list of excluded files.
  2360.  [+]  Added ability to apply (/MFA{+|-}) fixups since some executables
  2361.     (observed on FASTECHO2.EXE - written using Borland C++ for OS/2)
  2362.     were linked without /BASE: linker flag which leads to slower loading
  2363.     times and bigger executables without need since executables are
  2364.     always loaded at 0x10000. This option work only for .EXEs.
  2365.  [*]  Now the /V flag works *after* lxLite processes module, so you will see
  2366.     the *final* result of conversion, not the *original* module information.
  2367.     Of course, you can still see the original if you`ll disable all lxLite
  2368.     processing (the /C:info switch will do it for you).
  2369.  
  2370.  1.1.8
  2371.  ----- 01-Mar-97; well, its THE time for a new release :-)
  2372.  [!]  Fixed a serious bug in run-length packing method: the kernel
  2373.     decompressor expects two zeros at the end of packed data and lxLite
  2374.     didn`t put them there. The bug is since first lxlite release, so if
  2375.     you previously encountered problems (especially using /C:Ver2x switch)
  2376.     you should try to re-pack damaged modules (lxLite will correctly
  2377.     unpack even "incorrect" modules, then will correctly pack them).
  2378.     Big thanks to Vallat Christophe for pointing out this bug.
  2379.  [+]  Now to reply to any question you can instead of pressing simply
  2380.     [L]etter press <Alt>+[L]etter which will set the default reply for
  2381.     all following similar questions.
  2382.  [+]  Added the /MF3 fixup packing method which will find the best
  2383.     alternative for each page between /MF1 and /MF2. However this is
  2384.     a bit slow and does not give too much gain, so default is still /MF1.
  2385.  [!]  Fixed a serious bug in /MF2 packing method. Lucky for you, previous
  2386.     version was not public.
  2387.  [*]  Now you cannot proceed module along with displaying module structure
  2388.     (i.e. /V option has priority over any other).
  2389.  
  2390.  1.1.8g
  2391.  ----- 15-Feb-97, a year from first public release :-)
  2392.  [+]  Added some extra gain since now all fixed-up locations are filled
  2393.     with zeros before packing. For modules with pre-applied fixups this
  2394.     operation is not performed.
  2395.  [+]  Added fixup packing method for Warp 4.0 (3.0 with fixpack #17) and
  2396.     above (/MF2). This option is still at beta-test stage, so use with
  2397.     care (by default it is disabled now). Anyway, this method has proven
  2398.     to be less effective sometimes than /MF1 with above correction.
  2399.     And note that on most executables this method will have absolutely
  2400.     no effect: it is primarily intended for DLLs. Also note that when
  2401.     fixup packing is enabled, the /U{+|-} option is ignored - module is
  2402.     always unpacked first. The /MF2 option is ignored for modules with
  2403.     pre-applied fixups (for example DOSCALL1.DLL).
  2404.  
  2405.  1.1.8b
  2406.  ----- 25-Jan-97, my birthday :-)
  2407.  [;]  WARNING: This is a PUBLIC BETA version; it still contains bugs,
  2408.     especially in NE->LX conversion routines. USE WITH CARE.
  2409.     I tested it for about a month, and found THREE executables on which
  2410.     lxLite fails to convert (i.e. didn`t convert right from NE format
  2411.     into LX): please avoid them:
  2412.  
  2413.    - OS2DASD.DMD with beta support for HPFS on removable drives
  2414.     (other versions converts OK): halt on reboot with a "Unable to
  2415.     operate your hard drive" message.
  2416.    - RESOURCE.SYS from Warp 4.0 GA: Trap 0D on first keypress after
  2417.     it is loaded.
  2418.    - ES1688.SYS driver for ESS-1688 soundcard; trap when loading.
  2419.  
  2420.     I do not understand why this is happening; everything seems ok,
  2421.     but something is wrong :-( That`s why I`m releasing this public
  2422.     beta version: PLEASE REPORT ME ANY CASES WHEN LXLITE FAILS.
  2423.     Contact information is available at the end of LXLITE.ENG file.
  2424.  
  2425.  [*]  Changed configuration file format: now it is Unix-alike, i.e.
  2426.     configuration option is defined using square brakets, for
  2427.     example [default]; next lines are interpreted as command-line
  2428.     options that are loaded when loading specific section.
  2429.  
  2430.  [!]  Fixed two bugs in NE fixups conversion routine: this possibly
  2431.     caused most of failures when converting NE modules before.
  2432.  
  2433.  [+]  Added exclusions and additional-options-based-on-filemasks needed
  2434.     to entirely compress Watcom C subdirectory without losing
  2435.     functionality of any executable.
  2436.  
  2437.  [*]  Added the /NR switch; now lxLite will fail to convert NE files that
  2438.     contains resources; use the /NR option with care, especially on DLLs
  2439.     since you must know what executables uses that DLL and which
  2440.     function (Dos16GetResource or Dos16GetResource2) they`re using
  2441.     to load resources.
  2442.  
  2443.  1.1.7b
  2444.  ----- internal release
  2445.  [;]  Now lxLite converts NE executables into LX. Uhhh! Lots`o`work done.
  2446.     Lots'o'things changed. Lots'o'options added. Some options has been
  2447.     renamed, some merged into one, so read at least following info before
  2448.     trying new version.
  2449.  
  2450.  [*]  IMPORTANT: Now all options that can be followed by a string
  2451.     (i.e. file name, configuration ID) must have a semicolon before
  2452.     string, i.e. /C:default, /L:mylog etc.
  2453.  
  2454.  [*]  IMPORTANT: I changed a lot of options to make them more mnemonic:
  2455.     The /D option now is called /E ([E]xclude); /E option has been
  2456.     renamed into /R ([R]ecursive); /R option has been added to /A
  2457.     option (which still works in old way (say /APS); you also can
  2458.     directly specify new page shift count i.e. /A:4; you can use
  2459.     them both ways i.e. /APS:4);
  2460.  
  2461.  [*]  Changed a lot of internals so it it possible for some bugs to appear.
  2462.  
  2463.  [*]  If you choose to load a specific configuration, and configuration
  2464.     file contains more than one line that matches that config ID,
  2465.     lxLite will load all such lines, not only the first as before, so
  2466.     you can split very long configurations into some number of lines.
  2467.  
  2468.  [*]  Removed from configuration file options /C:failSafe, /C:fast,
  2469.     /C:fast2 because they`re useless: experience shows that executables
  2470.     packed with /C:default loads and works faster.
  2471.  
  2472.  [!]  Increased stack space: small stack space is very like to cause all
  2473.     those strange crashes of lxLite on deep directory trees.
  2474.  
  2475.  [!]  Some minor memory leaks has been fixed
  2476.  
  2477.  [+]  Added functionality to VERBOSE mode: now you can specify what kind
  2478.     of information you want to see. lxLite can serve as an replacement
  2479.     for EXEMAP and EXEHDR programs :-) More detailed descrition you can
  2480.     find in documentaion (English only, the German docs refers to version
  2481.     1.1.5). For displaying exported entry points, fixups and forwarders,
  2482.     lxLite now knows a lot of API functions by name. Today lxLite knows
  2483.     by name all documented API functions in all base OS/2 dynamic-link
  2484.     libraries. You can add your own - see the resources in API\
  2485.     subdirectory.
  2486.  
  2487.  [+]  When displaying long texts (i.e. /V{...} option, help text) lxLite
  2488.     will use a kind of 'MORE' prompt.
  2489.  
  2490.  [+]  Bundles of entry points now are re-packed although seems that in
  2491.     most cases they are packed well.
  2492.  
  2493.  [+]  Fixup records now are also re-packed, although in most cases they
  2494.     are already compressed. If you run lxLite on a previously packed
  2495.     file (with earlier versions) and you get some gain, it means that
  2496.     fixup records (or entry points bundles) has not been packed at
  2497.     the maximum possible level. If you got BIGGER files, please
  2498.     let me know :-)
  2499.  
  2500.  [!]  Corrected a bug which leaded to loss of non-resident name table
  2501.     (usually it contains executable description) with a message
  2502.     'LX file contains extra bytes' when it isn`t.
  2503.  
  2504.  [+]  Improved a bit 'already-compressed' executables detection.
  2505.  
  2506.  [+]  Added the /J option to change executable type: use it for
  2507.     converted NE drivers since NE drivers are marked as DLLs; LX
  2508.     drivers always must be marked as Device Drivers, otherwise they
  2509.     will not load successfully.
  2510.  
  2511.  [+]  Added the ability to use some specific configuration options
  2512.     for filenames that matches specific filemask. For example,
  2513.     if in configuration file you`ll specify the entry:
  2514.     @a*z.c?$: /B
  2515.     this will enable backups for files that matches the "a*z.c?$"
  2516.     filemask, i.e. aaaz.cc$, abcdefgz.ca$ but not for the bcde.cc$.
  2517.     A side effect of this is that you can encounter a option syntax
  2518.     error in the middle of the process, not only at the start.
  2519.  
  2520.  [+]  Improved a bit the /L option: now you can choose which types
  2521.     of events you want to log; be careful: now the log filename
  2522.     MUST BE SEPARATED BY A COLON from /L{...}, i.e. /L:"log file"
  2523.  
  2524.  [+]  Improved the /B option: now you can choose to backup only in
  2525.     the cases when module contains e[X]tra or [D]ebug data. Also you
  2526.     can choose to place backups in a certain directory; for example
  2527.     with the /B:bak option lxLite will place all backed up files
  2528.     into the \BAK\ directory on the current drive, recreating
  2529.     the same directory structure as the original file was placed in.
  2530.  
  2531.  [*]  The /G option has been merged with the /O option; the /G option
  2532.     now is gone.
  2533.  
  2534.  [+]  Modified the /W option: in the /WS+ state lxLite will perform
  2535.     just like always, except that it won`t write output file (and
  2536.     will display compression rate too unlike in the /W- state).
  2537.  
  2538.  [*]  lxLite utlity pack: version of utilites now will be the same as
  2539.     for lxLite. So all enclosed utilites (chCase, noEA etc) now have
  2540.     version 1.1.7
  2541.  
  2542.  [*]  Options in utilites changed according to changes in lxLite:
  2543.     recursive search changed from /E to /R etc.
  2544.  
  2545.  [+]  ChCase: The option /C{...} has been extended: now you can define
  2546.     separate rules for [F]iles and for [D]irectories: The /CF{...}
  2547.     switch will define case conversion rules for [F]iles and /CD{...}
  2548.     switch will define them for [D]irectories. If used in old fashion
  2549.     (i.e. /C{...}) it will work both for files and directories.
  2550.  
  2551.  [!]  Both chCase and lxLite when processing a file with no attributes
  2552.     (i.e. attrib -a-h-s-r) will set the Archive flag.
  2553.  
  2554.  [-]  Removed ColMng from lxLite utility pack because of its usefulness
  2555.     and excessive complexity for most users :-)
  2556.  
  2557.  [+]  Added/changed a whole lot of other things I don`t remember now.
  2558.  
  2559.  1.1.6
  2560.  ----- internal release
  2561.  [-]  Removed sources from base distribution. The sources are still
  2562.     available on request (see docs for "how to contact" information).
  2563.     This was done since they grow in size very fast (they use some of
  2564.     my external libraries - a function-two from each) and not too much
  2565.     people really needs them.
  2566.  [!]  Fixed a bug - the /GX{#} option worked only in /OX+ state
  2567.  [*]  Improved a bit help on /O{G|D|X} option
  2568.  [!]  Fixed a number of minor bugs in error-correction logic
  2569.  [*]  Changed default option in unLock from /V+ to /V-
  2570.  [*]  Changed default option in chCase from /V+ to /V-
  2571.  [*]  Before unlocking file all utilites saves now file date/time;
  2572.     after unlocking they`re restoring date & time, although this
  2573.     is an overkill (?).
  2574.  
  2575.  1.1.5
  2576.  ----- 19-Jun-96 another bug fix :-)
  2577.  [!]  AT LAST! The famous `cannot open configuration file` bug fixed :-)
  2578.     The problem was that CMD.EXE puts in environment the command line
  2579.     that you used to start lxLite AS-IS while 4OS2 replaced it by
  2580.     fully-qualified lxLite filename followed by its command-line
  2581.     parameters. I used it to compute lxLite`s source path; however
  2582.     program`s environment contains ANOTHER fully-qualified filename
  2583.     path which I use now :-) and which is ALWAYS fully-qualified.
  2584.  [+]  Because nobody understands how the /G switch works (I got a lot of
  2585.     e-mail regarding this) I added a new switch: /O{X|D|S}{+|-}. If it
  2586.     is disabled (/O-, default state) the /G switch works as before, i.e.
  2587.     the data is written only if discarded from source file. If the /O+
  2588.     option is used, the data is written always (if filemask is specified
  2589.     by /G option).
  2590.  [!]  Fixed an non-serious bug in CRT.PAS - now lxLite works as expected
  2591.     even if it is redirected into a device other than CON (i.e. /dev/nul),
  2592.     not only into files or pipes.
  2593.  [+]  After a lot of thougts I added into lxLite utility pack my first PM
  2594.     program for OS/2 - SysIcons. It is an simple program which allow you
  2595.     to change system pointers (including but not limiting to mouse pointers,
  2596.     as System Setup->Mouse->Pointer does). Also I included three of my best
  2597.     sets of pointers - one which I partially designed myself, partialy
  2598.     aquired from different sources, second is the B&W version of first
  2599.     and third (white gloves) which I got from somewhere and converted to
  2600.     B&W (because on my Cirrus Logic B&W pointers are supported by hardware
  2601.     and does not flicker). Sorry to the author of White Gloves set, but I
  2602.     lost original archive and copyright notice; I hope you`ll excuse me.
  2603.   [!] Improved a bit error checking; previous versions sometimes (seldom)
  2604.     failed on almost-good-exe-files (specifically GVPM.EXE which had one
  2605.     of non-mandatory internal table beyond the limits of EXE files which
  2606.     caused lxLite to fail with an runtime error).
  2607.  
  2608.  1.1.4
  2609.  ----- 14-Jun-96 minor fixes & additions
  2610.  [!]  Fixed displaying the question about extra LX data - I forgot to add
  2611.     an carriage return after it. Also I removed the warning about the
  2612.     possibility that resulting file will become non-functional.
  2613.  [!]  Fixed a stupid bug (sizeOf(F) instead of fileSize(F)) which sometimes
  2614.     forced lxLite to discard debug info even if you specify to leave
  2615.     it in resulting file. In such cases lxLite displayed that file
  2616.     has X bytes of extra data and the same amount of debug info.
  2617.  [+]  Added an sub-option for /G[X|D|S]{#} - the /GX option now specifies
  2618.     the filemask for files where to store stubs (even if lxlite won`t
  2619.     remove them).
  2620.  [!]  Fixed a minor bug in lxLite - when file was already processed but
  2621.     stored with debug info and you process it again and choose to discard
  2622.     debug info it refused to do it because `file was already processed`.
  2623.  [!]  Fixed a serious bug - the /G option in version 1.1.3 DOES NOT DO WHAT
  2624.     YOU PRESUME :-) It stored garbage instead of debug/extra data.
  2625.  [*]  The option /GX*.$x$ is used by default. This was done for those
  2626.     executables which failed to run after packing because the extra data
  2627.     has been stripped. Use COPY /B {file}.exe+{file}.x {newfile}.exe
  2628.     command to append extra LX data back - in most cases this will
  2629.     restore the functionality of LX files. Note that now lxLite leaves
  2630.     those *.$x$ files as garbage, so don`t forget to test the executable
  2631.     functionality and to delete them if executable still works.
  2632.  [*]  Improved performance of ChCase - now when computed filename will
  2633.     be the same as initial file will be simply skipped.
  2634.  
  2635.  1.1.3
  2636.  ----- 28-May-96 fixes & changes
  2637.  [*]  Modified lxLite to redraw its progress bar only when it really changes.
  2638.     This may improve its execution speed when running it in windowed
  2639.     sessions (however I don`t use them :-)
  2640.  [+]  Added option /G[X|D] which specifies an file mask for files where to
  2641.     store the e[X]tra LX data and [D]ebug info when encountered and if
  2642.     user chooses to discard it.
  2643.  [+]  The /S switch now displays the status of the /I switch also.
  2644.     This is done for those who don`t believe that it always works
  2645.     (you know who you are :-)
  2646.  [-]  Removed the /O{#} option which has proven to be useless.
  2647.  [-]  Removed the old /D{+|-} switch (debug info remove on/off). Now lxLite
  2648.     prompts the user if the debug info is encountered; however the default
  2649.     behavior is to discard debug info (/YDD) as before. Now /D switch have
  2650.     other meaning (see below).
  2651.  [+]  Added (other) /D switch to set exclusion filemasks. Filemasks uses the
  2652.     same rule as OS/2 does (in fact, lxLite uses OS/2 API to do that).
  2653.     For example, /Dex*re.??e:*.zip:*.pas:*.obj will exclude these files
  2654.     from lxLite`s field of view. The default configuration now includes
  2655.     the [exclude] configuration which excludes all known executables
  2656.     on which packing cannot be performed (such as PMJPEG, Watcom C etc).
  2657.     Masks should be separated by ':'; the ',' and ';' symbols can be
  2658.     present in HPFS long filenames, so they aren`t taken into account.
  2659.  [+]  The /Y switch is modified (expanded). Now you can specify answers
  2660.     for each type of possible questions separately. The /Y switch must
  2661.     be followed by a letter - ID of answered question, then a letter -
  2662.     what do you want answer to be to that question. The possible IDs
  2663.     for now are:
  2664.     -----------------------------------------------------------------------
  2665.     Module is in [U]se (answers: [R]eplace, [S]kip or [A]bort);
  2666.     File contains [D]ebug info ([D]iscard, [L]eave, [S]kip or [A]bort);
  2667.     File contains e[X]tra data ([D]iscard, [L]eave, [S]kip or [A]bort);
  2668.     .[B]AK file already exists ([O]verwrite, [N]o backup, [S]kip or [A]bort);
  2669.     Confirmation (/P+) ([P]rocess, [S]kip or [A]bort);
  2670.     -----------------------------------------------------------------------
  2671.     For example, the /YUR switch will instruct lxLite always to replace
  2672.     modules which are in use. The defaults are: /YBN /YDD and /YXD.
  2673.  [+]  Added /L{#} switch to specify an [L]og file name. If no filename is
  2674.     specified, the log file will be created as lxLite.log in the same
  2675.     directory as lxLite.exe. The log file contains a list of processed
  2676.     files, their initial and final sizes, and also all problems (if any)
  2677.     which have been encountered when processing the file.
  2678.  
  2679.  1.1.2
  2680.  ----- 22-May-96 minor additions and changes
  2681.  [;]  The BOXER for OS/2 APAR is closed now :-) At last I downloaded it
  2682.     from hobbes and it works packed absolutely without any problems.
  2683.     This is due to the effect of `overlayed data` for which support
  2684.     has been added in version 1.1.1.
  2685.  [+]  Added an alternative [D]iscard choice when prompting for an action
  2686.     when data out of LX structure is detected. Some DLL`s (even from
  2687.     \OS2\DLL) seems to contain some garbage after end of LX file.
  2688.  [*]  Changed memory allocation strategy - now memory manager allocate
  2689.     memory in 64K chunks which can fix the problem of slow performance
  2690.     on low-memory machines (8mb and less) when processing large files
  2691.     (i.e. TUTORMRI.DLL). I can`t check this - please mail me if it works.
  2692.  [*]  Changed backup strategy - now lxLite always make .BAK file even if
  2693.     backups are disabled (/B-). If operation succeeds and backups are
  2694.     disabled it is then removed. No more `$lxlite$.tmp` file.
  2695.  [*]  Now lxLite says '(very!)' in phrase
  2696.     'It is (very!) possible that resulting file will be non-functional'
  2697.     only if the size of data out of LX structure is bigger than 256 bytes
  2698.     (this can be changed by /O{#} option /see below/). If overlay size is
  2699.     bigger and /Y+ switch is specified file is skipped otherwise overlayed
  2700.     data is [D]iscarded.
  2701.  [+]  Added /O{#} option which allows to specify threshold size for overlay
  2702.     data. All overlays less than this value are discarded with /Y+ switch.
  2703.     For more information please refer to english documentation.
  2704.  [*]  Modified defaults - now lxLite by default doesn`t pack using
  2705.     run-length method AT ALL (i.e. as if you specified /MRN switch).
  2706.     That is because I hadn`t found even a case when using this method
  2707.     lxLite produced packed files by at least A BYTE less in size.
  2708.     Instead it compresses now A LOT faster.
  2709.  
  2710.  1.1.1
  2711.  ----- 07-May-96 bugfix
  2712.  [!]  noEA and chCase v1.0.0 does not work on directories - they says that
  2713.     the module is in use. Version 1.0.1 is fixed.
  2714.  [!]  lxLite, noEA, unLock and chCase leaves sometimes garbage on screen
  2715.     especially when processing long subdirectories. Fixed.
  2716.  
  2717.  1.1.0
  2718.  ----- 06-May-96 some additions + minor bugfix
  2719.  [*]  Change in version numeration: Now version numbers conforms to GNU
  2720.     standards. The first is major release number; second is minor release
  2721.     ordinal and third is incremented only on bug-fixes.
  2722.  [!]  Now lxLite checks for a valid MZ header in DOS executable stub.
  2723.  [!]  Fixed: lxLite stops sometimes after trying to `pack` locked files
  2724.     (i.e. swapper.dat) with a runtime error. The cause was a bug (sic!)
  2725.     in DosEnumAttribute - when you issue it on a locked file it trashes
  2726.     memory AFTER buffer passed to it (in my cause this trashed the stack).
  2727.  [+]  Now lxLite understands quoted long complex filenames on the command
  2728.     line like most OS/2 commands do. I.e. you can write
  2729.     lxLite "my own subdirectory\my executable file.exe" /cmax
  2730.  [+]  Added option /Q - query list of configurations.
  2731.  [+]  Added option /I{+|-} - Run/don`t run at idle priority
  2732.  [+]  Added detection of `overlayed` executables (usually from Watcom) -
  2733.     for more information see English documentation.
  2734.  [+]  Added `lxLite utility pack` which now consists of:
  2735.     - unLock which allow to unlock `locked` executables
  2736.     - chCase which allow to automatically change case of individual
  2737.      filenames as well as of groups of filenames
  2738.     - colMng is a simple utility to manage your WPS color palettes
  2739.     - noEA which allow to remove extended attributes from files
  2740.      and directories
  2741.  
  2742.  1.01
  2743.  ---- 23-Feb-96 minor bugfix
  2744.  [!] Bugfix :-) in v1.00 docs I erroneously stated that Alice was born
  2745.    at 13-Feb-96; however the real date is 12-Feb-1996 :-)
  2746.  [!] Now lxLite preserves not only timestamp but also file attributes.
  2747.    The version 1.00 erroneously stated that file is used by another
  2748.    process in the case lxLite failed to access it because of read-only
  2749.    or system attribute.
  2750.  [!] Fixed: lxLite preserves now extended attributes of the file. Sometimes
  2751.    EAs are useful, although mostly occupies disk space :-)
  2752.  [!] Fixed: lxLite now COPIES file into/from backup copies instead of
  2753.    renaming them: this caused the WorkPlace Shell to track such operations
  2754.    and to change the `program filename` field in program object.
  2755.  [*] Now /R{#} option can be used to re-align pages even on 1 (byte)
  2756.    boundary. This will get some extra bytes, however LINK386 does not
  2757.    allow this value to be less than 4 (but OS/2 eats it) - use at your
  2758.    own risk.
  2759.  [-] Removed `Switch-to-foreground-when-asking` feature. This was
  2760.    implemented rather as a lab work than a useful feature :-)
  2761.    On the other hand, the version with this feature must use
  2762.    PMSHAPI.DLL which is not always available (in particular when
  2763.    booting from OS/2 repair/installation diskettes).
  2764.  
  2765.  1.00
  2766.  ---- 15-Feb-96 first release version
  2767.  [!] When an invalid page is encountered don`t exit with an error but
  2768.    check first if this page is used. (Encountered on npswpsri.dll 1.81).
  2769.    This is an invalid executable; however error is not fatal because
  2770.    page isn`t used and OS/2 loads that DLL without problems.
  2771.  [!] Now lxLite keeps and restores original executable timestamp.
  2772.  [!] Fixed an error when OS/2 locks up on some DOS executables because
  2773.    it contained a 0 at offset 3Ch in DOS EXE header.
  2774.  [*] Changed format of .CFG file. Now it is a plain ASCII text file. For
  2775.    details refer to documentation, section about options.
  2776.  [-] Removed /D# option - use a text editor to add new cfgs.
  2777.  [+] Added /D{+|-} option allowing to remove debug information.
  2778.  [+] Added ability to recognize files packed with ABSOLUTELY THE SAME
  2779.    options, so lxLite will not proceed the same file twice. "The same"
  2780.    means that files will be recognized as packed ONLY if it has been
  2781.    processed with the same switch(-es) which influence resulting file
  2782.    size. Use /F+ (see below) switch to bypass this detection if you
  2783.    want to process file anyway - for example if it has been already
  2784.    packed, but not so good as it can be, i.e. by LINK386 or REPACK.
  2785.  [+] Added /F{+|-} option allowing to force repacking even if lxLite
  2786.    thinks that it is not needed. Use to bypass autodetection (`already
  2787.    processed' message).
  2788.  [+] Added /T{#} option allowing to replace DOS stubs. Use /T alone to
  2789.    completely remove DOS stubs - useful for DLLs `cause they cannot
  2790.    be run from DOS session at all.
  2791.  [+] Added ability to replace even USED! i.e. `active` .DLL`s and
  2792.    executables. Now you can repack entire \os2\*\*.* subdirectory
  2793.    without having to do a clean boot. Note that you better reboot after
  2794.    such operations because OS/2 will throw away all its internal cache
  2795.    buffers for this module and it (i.e. its old copy) will be kept
  2796.    entirely in memory/swapfile.
  2797.  [+] Now lxLite runs at the idle:16 priority so it won`t overload your CPU.
  2798.  [+] Now when lxLite encounters a problem to which he needs your answer he
  2799.    brings itself to the foreground. The only thing to say about it is:
  2800.    because of that lxLite uses now PMSHAPI & PMWIN.DLL, so it most likely
  2801.    will not run under T-Shell. Because of that there are TWO supplied
  2802.    versions of lxLite: lxLite-T.exe and lxLite.exe. Delete first if you
  2803.    will not need lxLite with a clean boot.
  2804.  [+] Added /Z{#} option which defines the threshold for lxLite to separate
  2805.    programs with `functional` stubs such as dual-mode executables from
  2806.    'dummy' stubs. Default size is 1024 bytes, i.e. on all executables with
  2807.    stub size bigger than 1024 bytes the /T{#} option will have no effect.
  2808.  
  2809.  0.99b
  2810.  ----- 07-Feb-96 beta-test version
  2811.  [;] What`s new? Nice question :-)
  2812.  
  2813.  
  2814. ΓòÉΓòÉΓòÉ 2. External links ΓòÉΓòÉΓòÉ
  2815.  
  2816. This chapter contains all external links referenced in this book - either link 
  2817. is an Unified Resource Locator (URL) or simply to a local file which is not a 
  2818. part of this book. 
  2819.  
  2820.  
  2821. ΓòÉΓòÉΓòÉ 2.1. http://hobbes.nmsu.edu ΓòÉΓòÉΓòÉ
  2822.  
  2823.               The link you selected points to an external resource.
  2824.                  Click the URL below to launch IBM Web Explorer
  2825.  
  2826.                              http://hobbes.nmsu.edu
  2827.  
  2828.  
  2829. ΓòÉΓòÉΓòÉ 2.2. http://www.anybrowser.org/campaign/ ΓòÉΓòÉΓòÉ
  2830.  
  2831.               The link you selected points to an external resource.
  2832.                  Click the URL below to launch IBM Web Explorer
  2833.  
  2834.                        http://www.anybrowser.org/campaign/
  2835.  
  2836.  
  2837. ΓòÉΓòÉΓòÉ 2.3. mailto:bit@freya.etu.ru ΓòÉΓòÉΓòÉ
  2838.  
  2839.               The link you selected points to an external resource.
  2840.                  Click the URL below to launch IBM Web Explorer
  2841.  
  2842.                              mailto:bit@freya.etu.ru
  2843.